#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
Тогда не будет иметь значения, как он называется, только в каком месте он находится.