Office 360, 64 бит, Excel.Подпрограмма Private Sub Card_FindCardNumber_AfterUpdate()
- это textbox (Card_FindCardNumber)
, что после того, как я ввел номер, который запрашиваю, код должен проверить, существует ли он.
Во время тестирования кода не имеет значения, существует ли это число или нет, я получаю то же сообщение об ошибке "Runtime Error 91", Object Variable or With Block variable not set
.
Я любитель VBA и не могу понять, почему существует проблема с конкретной строкой кода.
Я адаптировал код от Тревора Истона, (Онлайн-обучение ПК) " Excel VBA с пользовательской формой Vlookup " от YouTube и его веб-сайта:
На самом деле Ws01
- это кодовое имя электронной таблицы, представляющей рабочий лист cnVisitorCard_Database.
Vlookupотносится к именованному диапазону: «LookupCardNo», который имеет функцию смещения, охватывающую данные из 9 столбцов (от столбца AC (Card #) до последнего столбца диапазона имен AK)
Private Sub Card_FindCardNumber_AfterUpdate()
'Define the Variables
Dim ws01 As Worksheet
Dim cnVisitorCard_Database As Worksheet
Set ws01 = cnVisitorCard_Database
'Check to see if value exists
If WorksheetFunction.CountIf(ws01.Range("AC:AC"), Me.Card_FindCardNumber.Value) = 0 Then
MsgBox "This is an incorrect ID"
Me.Card_FindCardNumber.Value = ""
Exit Sub
End If
'Lookup values based on first control
With Me
.Card_ExpiryDate = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 2, 0)
.Card_Status = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 3, 0)
.Card_ReturnDate = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 4, 0)
.Card_Description = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 5, 0)
.Card_TypeCode_Hidden = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 6, 0)
.Card_ValidNo_ofDays_Hidden = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 7, 0)
.Card_UpdatedInHW = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 8, 0)
.Card_UpdatedInFF = Application.WorksheetFunction.VLookup(CLng(Me.Card_FindCardNumber), ws01.Range("LookupCardNo"), 9, 0)
End With
End Sub
Я получаюошибка 91 в строке:
If WorksheetFunction.CountIf(ws01.Range("AC:AC"),
Me.Card_FindCardNumber.Value) = 0 Then
Я, конечно, ожидаю, что он вернет значения в текстовые поля пользовательской формы, если число существует, но если оно не существует, то я ожидаюэто, чтобы хлопнуть меня с всплывающим сообщением, говорящим мне, что номер не существует.
Я был бы очень признателен за любую помощь :), конечно, я бы не знал, будут ли другие ошибки после того, как это будет устранено.