I’m looking for user ID #s from a list. However some users no longer exist. I’ve tried the test
method, the on error go to
method, and if err.number<> 0 then
method. I still receive the Run-time error '91': object variable or with block variable not set
. The number does not exist on the the list. Below is my code with a couple of fruitless attempts
On Error GoTo errorLn
If Err.Number <> 0 Then
GoTo errorLn
End If
Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
What other options are there? Or am I misplacing the lines of «error»? I have tried it before and after the «cells.Find…»
asked Aug 15, 2012 at 16:03
You will want to do something different than have message boxes, presumably.
Dim myCell As Range
Set myCell = Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If (Not myCell Is Nothing) Then
MsgBox "something!"
Else
MsgBox "nothing"
End If
answered Aug 15, 2012 at 16:12
enderlandenderland
13.7k17 gold badges100 silver badges152 bronze badges
I believe you’ll need to restructure it just a little bit. It is not the best practice to handle errors with On Error Resume Next
, but you could try this:
On Error Resume Next
Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
If Err.Number <> 0 Then
'''Do your error stuff'''
GoTo errorLn
Else
Err.Clear
End If
Does that work for your situation?
Source: http://www.mrexcel.com/forum/excel-questions/143988-check-if-value-exists-visual-basic-applications-array.html
answered Aug 15, 2012 at 16:08
2
Try this
Sub Sample1()
Dim oSht As Worksheet
Dim uSSO As String
Dim aCell As Range
On Error GoTo Whoa
'~~> Change this to the relevant sheet
Set oSht = Sheets("Sheet1")
'~~> Set User ID here
uSSO = "User ID"
Set aCell = oSht.Cells.Find(What:=uSSO, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'~~> Check if found or not
If Not aCell Is Nothing Then
MsgBox "Value Found in Cell " & aCell.Address
Else
MsgBox "Value Not found"
End If
Exit Sub
Whoa:
MsgBox Err.Description
End Sub
I also would recommend reading this link where I have covered .Find
and .FindNext
Topic: .Find and .FindNext In Excel VBA
Link: https://web.archive.org/web/20160316214709/https://siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/
Kolappan N
3,5012 gold badges35 silver badges41 bronze badges
answered Aug 15, 2012 at 16:09
Siddharth RoutSiddharth Rout
146k17 gold badges206 silver badges250 bronze badges
1
Сбитый Лётчик Небосводов Пользователь Сообщений: 16 |
#1 06.03.2022 07:19:06 Здравствуйте, коллеги!
При этом:
Но хочется понять, в чём дело, Прикрепленные файлы
|
||||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#2 06.03.2022 09:02:09
Так Вы посмотрите на имя диаграммы и сравните с их кол-вом — это не всегда одинаковые значения. У Вас диаграмма уже не пойми сколько раз на листе создавалась и поэтому у неё имя: Chart 27. А Вы пытаетесь обратиться этим кодом:
к Chart 1 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
VBA -это чрезвычайно черствая, бездушная и циничная штукенция, которая выполняя каждую строку вашего кода — делает не то, для чего это строка была сгенерирована путем напряженной мыслительной деятельности, а то, что в этой строке написано! Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Сбитый Лётчик Небосводов Пользователь Сообщений: 16 |
#4 06.03.2022 13:23:51
Спасибо.
Зачем Вы это написали? |
||||
я это написал для вас (и не только) Изменено: Ігор Гончаренко — 06.03.2022 15:00:53 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
_Igor_61 Пользователь Сообщений: 3007 |
Сбитый Лётчик Небосводов
, для начала изучите и поймите, что Count и Name — разные вещи, прежде чем предъявлять претензии к тем, кто Вам пытается помочь. Это о времени читающих (Ваше #4) |
Сбитый Лётчик Небосводов Пользователь Сообщений: 16 |
#7 06.03.2022 17:42:07
1. Чтобы что-то «изучить», а после «понять», нужно знать, что изучать. Об этом я и спрашивал, и это мне уже объяснили. Без Вас. Ігор Гончаренко поучений: не говорите, что мне делать,. и я не скажу, куда вам пойти. |
||
_Igor_61 Пользователь Сообщений: 3007 |
#8 06.03.2022 18:07:05
Спасибо!
Лист и диаграмма — тоже разные вещи (объекты). Потому и советы (но не «поучения»). Учитесь летать, «летчик», чтобы какое-то незнание чего-то Вам не помешало при очередном взлете! |
||||
Сбитый Лётчик Небосводов Пользователь Сообщений: 16 |
#9 06.03.2022 18:23:48
Вы продолжаете поучать. При этом я Вас ни о чём не прошу, т.е. лезете ко мне с непрошенным, Изменено: Сбитый Лётчик Небосводов — 06.03.2022 18:24:16 |
||
_Igor_61 Пользователь Сообщений: 3007 |
Простите, не видел предыдущую тему |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Сбитый Лётчик Небосводов, никто Вас не поучает. Успокойтесь. |
Сбитый Лётчик Небосводов Пользователь Сообщений: 16 |
#12 06.03.2022 18:52:10
Привести цитаты и доказать наличие поучений? |
||
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#13 06.03.2022 19:21:54
Меня, как модератора, на форуме касается всё. Тема закрыта: решение Вам не нужно — зашли поскандалить. |
||
объект не найден. ActiveWorkbook |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
возникли проблемы с добавлением кнопки s в форму пользователя. По сути, я хочу, чтобы кнопка вставляла данные в новую строку на sheet1 с полями, установленными, как показано ниже. Однако при тестировании кнопки появляется сообщение об ошибке «Метод или элемент данных не найден».
Не очень хорошо с VBA, пробовал читать онлайн, но я все еще не понимаю, что делать. Пожалуйста помоги.
Private Sub CommandButton1_Click()
Dim LastRow As Long, ws As Worksheet
Set ws = Sheets("Sheet1")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("A" & LastRow).Value = ComboBox1.Text
ws.Range("C" & LastRow).Value = TextBox1.Text
ws.Range("D" & LastRow).Value = ComboBox2.Text
ws.Range("F" & LastRow).Value = CheckBox2.Text
ws.Range("E" & LastRow).Value = CheckBox1.Text
ws.Range("H" & LastRow).Value = ListBox1.Text
ws.Range("G" & LastRow).Value = ListBox2.Text
ws.Range("I" & LastRow).Value = TextBox2.Text
End Sub
Флажки не имеют свойства Text
. Вместо этого используйте свойство Value
, например:
ws.Range("F" & LastRow).Value = CheckBox2.Value
Обратите внимание, что это возвращает либо «True», либо «False». Если вам требуется что-то еще, вам нужно сделать проверку, например:
ws.Range("F" & LastRow).Value = IIf(CheckBox2.Value,"Yes","No")
0 / 0 / 0 Регистрация: 29.03.2016 Сообщений: 37 |
|
1 |
|
Как вывести сообщение, если необходимый файл не найден?22.11.2016, 08:48. Показов 3398. Ответов 1
имеется переменная filename, значение которой формируется в зависимости от выбранных значений на форме, после чего файл открывается, с него копируется информация, filename закрывается.
0 |
snipe 4038 / 1423 / 394 Регистрация: 07.08.2013 Сообщений: 3,541 |
||||
22.11.2016, 09:16 |
2 |
|||
Сообщение было отмечено Lovinetskiy A как решение Решениеесли функция dir(«полный путь») вернет пустую строку то файла нет
1 |
Я пытаюсь отобразить сообщение об ошибке с недопустимым номером, если элемент не найден с одного листа на другой.
Sub info()
Dim dehyp As Long
Dim rng As Range
Dim wrong As String
wrong = "False"
dehyp = Replace(Range("A5").Value, "-", "")
Sheets("Gov").Select
Set rng = Sheets("Gov").Columns(1).Find(What:=dehyp, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
On Error Resume Next
Set wrong = "True"
If wrong = "True" Then
Sheets("Total usage").Select
MsgBox ("Invalid Number")
Else
rng.Offset(0, 1).Select
Selection.Copy
Sheets("Total usage").Select
Range("B5").Select
ActiveSheet.Paste
'this part works without the else and the error stuff
End If
End Sub
Я определил размеры переменных и установил неправильную исходную переменную как false. Я получаю сообщение об ошибке компиляции, в котором говорится, что требуется объект. Итак, мой вопрос: почему это происходит и что я могу сделать, чтобы исправить ошибку?
1 ответ
Лучший ответ
Учитывая все комментарии, я думаю, вы можете быть после этого кода:
Option Explicit
Sub info()
Dim dehyp As Long
Dim rng As Range
dehyp = Replace(Range("A5").Value, "-", "")
Set rng = Sheets("Gov").Columns(1).Find(What:=dehyp, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If rng Is Nothing Then
MsgBox ("Invalid Number")
Else
rng.Offset(0, 1).Copy Destination:=Sheets("Total usage").Range("B5")
End If
End Sub
3
DisplayName
21 Окт 2019 в 23:46