Поскольку Search = ISBNTextBox.Text
, то
Set FoundISBN = ws.Columns(5).Find(Search, LookIn:=xlValues, Lookat:=xlWhole)
и
ISBN = Application.WorksheetFunction.CountIf(ws.Range("E:E"), Me.ISBNTextBox)
используются для одной и той же вещи. Вы можете переписать свой код как
Option Explicit
Private Sub ISBNTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim FoundISBN As Range
Dim ws As Worksheet
Set ws = Worksheets("booklist")
ISBN_checker.Caption = ChrW(&H2713) '<~~ Set this as default value
Set FoundISBN = ws.Columns(5).Find(What:=ISBNTextBox.Text, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'~~> Check if find returned anything
If Not FoundISBN Is Nothing Then
ISBN_checker.Caption = "Duplicate" & " " & FoundISBN.Address
FoundISBN.EntireRow.Select
End If
End Sub
Примечание : при использовании .Find
помните 2 вещи
- Excel запоминает последние настройки
.Find
и следовательно, чтобы избежать путаницы, используйте все ее параметры. - Всегда проверяйте, вернул ли
.Find
что-то или нет, прежде чем пытаться использовать его, иначе вы получите «Ошибка времени выполнения 91 - Переменная объекта или С переменной блока» не установлена "ошибка