Excel VBA — ошибка времени выполнения 9 (индекс вне диапазона)

#vba #excel

#vba #excel

Вопрос:

я получаю ошибку времени выполнения 9 при попытке выполнить программу со следующим кодом.

 Private Sub CommandButton1_Click()
    Dim varResponse As Variant

    varResponse = MsgBox("Are you sure want to add this ?", vbYesNo, "Selection")
    If varResponse <> vbYes Then Exit Sub
Dim RowCount As Long
Dim ctl As Control

If Me.TextBox1.Value = "" Then
 MsgBox "Please enter #.", vbOKOnly
 Me.TextBox1.SetFocus
 Exit Sub
 End If
If Me.txtdescription.Value = "" Then
 MsgBox "Please enter a description.", vbOKOnly
 Me.txtdescription.SetFocus
 Exit Sub
 End If
 ' Write data to worksheet
 RowCount = Worksheets("Secretarial Jobs Description").Range("A1").CurrentRegion.Rows.Count
 With Worksheets("Secretarial Jobs Description").Range("A1")
 .Offset(RowCount, 0).Value = Me.TextBox1.Value
 .Offset(RowCount, 1).Value = Me.txtdescription.Value


 End With
 ' Clear the form
For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
ctl.Value = ""
ElseIf TypeName(ctl) = "CheckBox" Then
ctl.Value = False
End If
Next ctl

End Sub
  

В результате чего часть отладки подчеркнула, что

  RowCount = Worksheets("Secretarial Jobs Description").Range("A1").CurrentRegion.Rows.Count
     With Worksheets("Secretarial Jobs Description").Range("A1") 
  

где была обнаружена ошибка. У меня ошибка в коде?

Комментарии:

1. Существует Secretarial Jobs Description ли лист в вашей текущей книге? Вы уверены, что между кодом VBA и самим листом нет опечаток, дополнительных / отсутствующих белых символов или различий в регистре букв?

2. Вы запускаете макрос из той же книги, что и данные, или из отдельной??

3. Вот лист1 объекта Mircrosoft Excel (распределение) Лист2 (клиент) Лист3 (рабочие листы) Лист4 (пользователь)

4. Где находится Secretarial Jobs Description лист??

5. он находится на листе 3 (рабочие листы)

Ответ №1:

«Индекс вне диапазона» — это ошибка, возникающая, когда элемент не найден в коллекции по его имени или индексу. Весьма вероятно, что в вашей текущей рабочей книге нет рабочего листа с (точным) названием «Описание работы секретаря».

Ответ №2:

Как уже было сказано, должно быть, имя листа, которое вы вызываете, неверно или не существует.

Вы могли бы попробовать ссылаться на лист по его номеру объекта:

 RowCount = Sheets(1).Range("A1").CurrentRegion.Rows.count
  

Тогда не будет иметь значения, как он называется, только в каком месте он находится.