Хотя стандарт C ++ не имеет такого требования, некоторым компиляторам требуется, чтобы все шаблоны функций и классов были доступны в каждой используемой системе переводов. Фактически для этих компиляторов тела шаблонных функций должны быть доступны в файле заголовка. Повторить: это означает, что эти компиляторы не позволят их определять в файлах без заголовка, таких как .cpp-файлы
Существует ключевое слово export , которое должно смягчать этот проблема, но он нигде не близок к тому, чтобы быть портативным.
Мних, с помощью StrComp , vbBinaryCompare или vbTextCompare даст вам возврат, который вы получаете в настоящее время. Когда Excel сортирует числа / целые числа, он сортирует их так, как вы ожидаете, но при сортировке чисел в виде строк используется текстовое сравнение; так что все числа, начинающиеся с 1, даже 111, будут ранжироваться ниже 2. Как упоминает Коминтерн , вы должны добавить ведущие нули, чтобы избежать этого.
Или, возможно, вы ответили одним сравнением чисел, прежде чем ранжировать строки, вы можете попробовать функцию для извлечения чисел, а затем позволить этому взвешивать ваше решение:
'pass in array from main stuff
Function StackOverflow(arr())
Dim arr_NewStr() As String
Dim x As Integer
Dim i As Integer
ReDim arr_NewStr(1 To UBound(arr))
x = 1
For i = 1 To UBound(arr)
Do
If IsNumeric(Mid(arr(i), x, 1)) Then
arr_NewStr = arr_NewStr & Mid(arr(i), x, 1)
End If
x = x + 1
Loop Until x = Len(arr(i))
Next
'clean up
x = vbEmpty: i = vbEmpty
'pass somewhere, or make "arr" public
End Function [ 115]