Я пытаюсь адаптировать код, когда искомый элемент не найден - PullRequest
1 голос
/ 08 мая 2020

У меня есть этот код, который выполняет поиск в отдельной книге на определенном листе и дает мне данные в следующей ячейке того, что я искал. Это отлично работает, если искомый элемент найден, но я не могу адаптировать код, если искомый элемент не найден. Когда это происходит, я просто хочу вернуть сообщение на метку в пользовательской форме, что элемент не найден. Я смотрел и читал руководства и пробовал использовать If Not Is Nothing , но я просто не могу заставить его работать. Буду признателен, если кто-нибудь поможет? Большое спасибо.

Dim departments As Workbook
Dim searchItem As String
Dim foundItem As String


Set departments = Workbooks.Open("C:\Users\MyPc\Desktop\Department References.xls")

searchItem = UserForm1.Textbox1.Value

If Menu.optionBtnDepartmentOne = True Then
foundItem = departments.Worksheets("Department One").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value

ElseIf Menu.optionBtnDepartmentTwo = True Then
foundItem = departments.Worksheets("Department Two").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value

ElseIf Menu.optionBtnDepartmentThree = True Then
foundItem = departments.Worksheets("Department Three").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value

End If

UserForm1.Label = foundItem
Workbooks("Department References").Close SaveChanges:=False

1 Ответ

1 голос
/ 08 мая 2020

Ты думаешь написать это как функцию? И если функция возвращает «что-то», значит, это сообщение, которое вы хотели. Это будет выглядеть так:

Sub fill_UF()

Dim searchItem as string

SearchItem = UserForm1.Textbox1.Value

If foundItem(searchItem)= "Did not Find item" then 
Msgbox foundItem(searchItem)
goto ending
End if

UserForm1.Label = foundItem(searchItem)

ending:
End sub

'

Function foundItem(searchItem as string)

Dim departments As Workbook
'Dim searchItem As String
'Dim foundItem As String


Set departments = Workbooks.Open("C:\Users\MyPc\Desktop\Department References.xls")

'searchItem = Cstr(searchItem) ' sometimes you need to add this

If Menu.optionBtnDepartmentOne = True Then
foundItem = departments.Worksheets("Department One").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value
Goto ending

ElseIf Menu.optionBtnDepartmentTwo = True Then
foundItem = departments.Worksheets("Department Two").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value
Goto ending

ElseIf Menu.optionBtnDepartmentThree = True Then
foundItem = departments.Worksheets("Department Three").Range("D2:D10000").Find(searchItem).Offset(0, 1).Value
Goto ending
End If

foundItem = "Did not Find item"

ending:
Workbooks("Department References").Close SaveChanges:=False

End function

Попробуйте это. Возможно, для работы потребуется некоторое редактирование, но идея есть.

...