Я пытаюсь создать функцию, которая ищет значение в заданном диапазоне ячеек, но оно не выполняется. Он должен вернуть ячейку, где значение найдено.Функция VBA не выполняется
Function searchInRange(where As Range, what As String) As Range
For Each c In where.Cells
Debug.Print (c.Value)
If c.Value = what Then
searchInRange = c
End If
Next c
End Function
Я вызываю его из подмодуля, но он не выполняется. Если я иду на отладку, отладчик просто переходит к следующему оператору без ввода функции. Я не понимаю, почему
EDIT
Как и многие люди предложили, я отправляю модуль, который вызывает функцию. Это функция нажатия кнопки. Файл и лист правильно выбраны. Я знаю это, потому что последнее предложение (PE_Sheet.activate) работает правильно. С уважением.
Private Sub CommandButton1_Click()
Dim PE_File As Workbook
Dim PE_Sheet As Worksheet
Dim cell As Range
Set PE_File = Workbooks(getSelectedWorkbook())
Set PE_Sheet = PE_File.Worksheets("Monitored")
Unload UserForm1
searchAlarmFilter PE_Sheet.Range("A:A"), "5184"
PE_Sheet.Activate
End Sub
Можете ли вы опубликовать раздел кода, который вызывает функцию? – TheEngineer
Если функция не указана в родительской суб/функции, вы должны смотреть на родительскую подфункцию/функцию вместо указанной выше. Как предложил @TheEngineer, разместите раздел, который вызывает указанную выше функцию – Alex
, не то, что это проблема, но вы можете захотеть «выйти за», поскольку вы рискуете перезаписать ранние результаты. – NickSlash