Это вопрос в основном для понимания и изучения, а затем для поиска решения, поскольку я знаю, что вызывает проблему, и сделал обходной путь.
Я получаю ошибку во время выполнения '-2147417848 (80010108)' : Метод 'Value' объекта 'Range' не выполнен.
У меня есть основная пользовательская форма с ListBox, она заполняется из таблицы. Затем у меня есть вторичная пользовательская форма, чтобы сделать новые записи в указанной таблице. Эта таблица находится на моем листе shData («Daten») и называется «mainData». Если просто запустить вспомогательную форму для создания новой записи, все в порядке. Но если я запускаю вторичную форму из основной формы, я получаю сообщение об ошибке.
Это код в главной форме.
Private Sub newEntryButton_Click()
newEntry.Show
End Sub
Private Sub UserForm_Activate()
mainListUpdate
End Sub
Это код во вторичной форме
Private Sub doneButton_Click()
Dim n As Long
n = cRow + 1
shData.Range("A" & n).Value = nameBox.Value
shData.Range("B" & n).Value = paraBox.Value
shData.Range("C" & n).Value = hStartBox.Value
shData.Range("D" & n).Value = bdayBox.Value
If OptionButtonStat.Value = True Then
shData.Range("E" & n).Value = "Ja"
shData.Range("G" & n).Value = statPlaceBox.Value
ElseIf OptionButtonAmb.Value = True Then
shData.Range("F" & n).Value = "Ja"
End If
Me.Hide
End Sub
Private Sub OptionButtonStat_Change()
If OptionButtonStat.Value = True Then
Me.statPlaceBox.Visible = True
Me.statPlaceLab.Visible = True
Else
Me.statPlaceBox.Visible = False
Me.statPlaceLab.Visible = False
End If
End Sub
Public Sub UserForm_Activate()
Me.statPlaceBox.Visible = False
Me.statPlaceLab.Visible = False
End Sub
и это код в модуле.
Public cRow As Long
Public cCol As Long
Public Sub mainListUpdate()
If shData.FilterMode = True Then
shData.ShowAllData
End If
cRow = shData.Range("A1").CurrentRegion.Rows.Count
cCol = shData.Range("A1").CurrentRegion.Columns.Count
formMain.listMain.ColumnCount = cCol
formMain.listMain.ColumnHeads = True
formMain.listMain.RowSource = "mainData"
End Sub
Ошибка возникает в следующей строке во вторичном коде формы: shData.Range("A" & n).Value = nameBox.Value
. Если я изменю formMain.listMain.RowSource = "mainData"
в коде модуля на formMain.listMain.RowSource = "Daten!A2:G"
, проблема исчезнет. Опять же, код отлично работает с таблицей как RowSource, если я просто использую вторичную форму, просто нужно добавить cRow = shData.Range("A1").CurrentRegion.Rows.Count
.
Надеюсь, я объяснил это достаточно хорошо. Может кто-нибудь объяснить, почему у меня такая проблема? Было очень сложно искать проблему, и я действительно хотел бы использовать оригинальный код.