Я новичок в vba и совершенно потерял в написании вышеупомянутой функции в vba. На самом деле, я хочу сделать то же самое, что и обычную формулу Excel.
Обновление: Основываясь на ответе Скотта, я скорректировал свой код. Теперь у меня ошибка несоответствие типов . Тип Mname по определению является строкой. Значения в диапазоне поиска (B18: B38) являются (не исключающими) целыми числами. Должен ли я сказать Excel, чтобы принять их как строку? Если да, то как?
Сводка: У меня есть диапазон (D18: D38), в котором я хочу выбрать значение на основе номера строки, определенного совпадением между строкой Variable ( Mname) и другой диапазон (B18: B38). Строковая переменная определяется именем файла в папке.
Моя проблема заключается в том, что я получаю сообщение об ошибке: ' Невозможно получить свойство соответствия класса функции листа '
Спасибо за вашу помощь!
Sub Test()
Application.ScreenUpdating = False
Dim Mname As String
Set WSCockpit = ThisWorkbook.ActiveSheet
Dim strFileName As String
Dim strFolder As String: strFolder = WSCockpit.Range("D9").Value
Dim strFileSpec As String: strFileSpec = strFolder & "*.xls*"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
Dim strFilePath As String: strFilePath = strFolder & strFileName
Mname = Mid(strFileName, 13, Len(strFileName) - 17)
Dim rw As Long
rw = Application.Match(Mname, WSCockpit.Range("B18:B38"), 0)
Dim VarImp As Boolean
VarImp = Application.WorksheetFunction.Index(WSCockpit.Range("D18:D38"), rw)
'some other task'
Loop
Application.DisplayAlerts = True
End Sub
Резервное копирование: Извините за грязный код. Я понятия не имею об общих правилах написания VBA. Как упоминалось ранее, моя цель - запустить поиск. Найденное значение будет «ИСТИНА» или «ЛОЖЬ». После этого я буду использовать это, чтобы определить, нужно ли импортировать найденный в папке файл или нет. Если у вас есть другие предложения относительно моего кодирования или задачи, которую я хочу выполнить, я был бы рад услышать.