У меня есть следующий Public sub:
Public Sub HowToSort()
Dim i As Long, j As Long, h As Long, curCell As Range, cellBelow(1 To 10) As Variant
Dim sortOrder(1 To 10), colIsString(1 To 10) As Variant
For i = 1 To hdrCount
'Find location of a cell
Set curCell = Application.WorksheetFunction.Match(headRow(i), Range("a1:z1")) ' Eventually extend outwards?
cellBelow(i) = curCell.Offset(0, 1).Value
If IsNumeric(cellBelow(i)) = False Then
colIsString(i) = True
sortOrder(i) = Application.InputBox(prompt:="Alphabetical = 'True' or Reverse Alphabetical = 'False' sorting for " & headRow(i), Type:=4)
ElseIf IsNumeric(cellBelow(i)) = True Then
colIsString(i) = False
sortOrder(i) = Application.InputBox(prompt:="Ascending = True or Descending = False for " & headRow(i), Type:=4)
Else
MsgBox ("Program does not recognize value contained in column" & headRow(i))
End
End If
Next i
End Sub
, который использует глобальную переменную с именем headRow, содержащую массив строк имен строки заголовка в верхней части рабочего листа.Я пытаюсь использовать функцию соответствия, чтобы найти адрес ячейки, в которой расположен заголовок:
Set curCell = Application.WorksheetFunction.Match(headRow(i), Range("a1:z1"))
cellBelow(i) = curCell.Offset(0, 1).Value
Затем я хочу использовать этот адрес, сместить его вниз на одну ячейку, чтобы найти тип данныхвведены, эти данные будут введены в массив colIsString.Однако функция .Match не работает, ссылаясь на ошибку «Несоответствие типов».Я не знаю, как это могло быть?Из моего предыдущего исследования выяснилось, что команда .Match принимает диапазон, а затем ищет этот диапазон, чтобы соответствовать значению ячейки.Я пробовал несколько воплощений команды .Match безуспешно.Ваши мысли оценили ...
H3lue