У меня есть функция в модуле, которая прекрасно работает при вызове в Sub, но при использовании в рабочей таблице я получаю только пробелы. Функции должны иметь 3 входа. Один вход определил лист для проверки, а затем нашел строку, соответствующую двум другим критериям. Я использовал подпрограмму, которая вызвала функцию и предоставила msgbox с результатом, который был правильным. Но в рабочем листе тот же самый ввод привел к пустой ячейке.
Function ToolStatus(PartNumber As String, Model As String, Number As Integer) As String
Dim SearchSheet As Worksheet
Dim PN As Integer
Dim MdlCol As Integer
Dim Mdl As String
Dim Result As Integer
Dim FinalRow As Integer
Dim i As Integer
Application.ScreenUpdating = False
Select Case True
Case Number < WorksheetFunction.CountA(Sheet2.Range("B:B")) And Model = "1A"
Set SearchSheet = Sheet2
PN = 2
MdlCol = 4
Mdl = "1A"
Result = 19
Case Number < WorksheetFunction.CountA(Sheet2.Range("B:B")) And Model = "1B"
Set SearchSheet = Sheet2
PN = 2
MdlCol = 5
Mdl = "1B"
Result = 19
Case Number < WorksheetFunction.CountA(Sheet2.Range("B:B")) And Model = "1C"
Set SearchSheet = Sheet2
PN = 2
MdlCol = 6
Mdl = "1C"
Result = 19
Case Number < WorksheetFunction.CountA(Sheet3.Range("B:B")) And Model = "1A"
Set SearchSheet = Sheet3
PN = 3
MdlCol = 17
Mdl = "-1A"
Result = 4
Case Number < WorksheetFunction.CountA(Sheet3.Range("B:B")) And Model = "1B"
Set SearchSheet = Sheet3
PN = 3
MdlCol = 18
Mdl = "-1B"
Result = 4
Case Number < WorksheetFunction.CountA(Sheet3.Range("B:B")) And Model = "1C"
Set SearchSheet = Sheet3
PN = 3
MdlCol = 19
Mdl = "-1C"
Result = 4
End Select
SearchSheet.Select
FinalRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To FinalRow
If Cells(i, PN) = PartNumber And Cells(i, MdlCol) = Mdl Then
ToolStatus = Cells(i, Result).Value
Exit For
End If
Next i
Application.ScreenUpdating = True
End Function