Проблема с ошибкой «Метод« Значение »объекта« Диапазон » - PullRequest
0 голосов
/ 17 марта 2020

Это вопрос в основном для понимания и изучения, а затем для поиска решения, поскольку я знаю, что вызывает проблему, и сделал обходной путь.

Я получаю ошибку во время выполнения '-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.

Надеюсь, я объяснил это достаточно хорошо. Может кто-нибудь объяснить, почему у меня такая проблема? Было очень сложно искать проблему, и я действительно хотел бы использовать оригинальный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...