Excel “问题”;方法';价值';对象的';范围';“失败”;错误

Excel “问题”;方法';价值';对象的';范围';“失败”;错误,excel,vba,Excel,Vba,这是一个主要用来理解和学习的问题,然后找到解决方案,因为我知道问题的原因并找到了解决办法 我收到运行时错误“-2147417848(80010108)”:对象“范围”的方法“值”失败 我有一个带有列表框的主用户表单,它从表中填充。然后,我有一个辅助用户表单在所述表中创建新条目。该表位于我的工作表shData(“Daten”)中,称为“主数据”。如果只是运行第二个表单来创建新条目,则一切正常。但是如果我从主窗体开始第二个窗体,就会得到错误 这是主窗体中的代码 Private Sub newEntr

这是一个主要用来理解和学习的问题,然后找到解决方案,因为我知道问题的原因并找到了解决办法

我收到运行时错误“-2147417848(80010108)”:对象“范围”的方法“值”失败

我有一个带有列表框的主用户表单,它从表中填充。然后,我有一个辅助用户表单在所述表中创建新条目。该表位于我的工作表shData(“Daten”)中,称为“主数据”。如果只是运行第二个表单来创建新条目,则一切正常。但是如果我从主窗体开始第二个窗体,就会得到错误

这是主窗体中的代码

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”
,则问题消失。同样,代码可以将表用作行源,如果我只使用第二个表单,只需要添加
cRow=shData.Range(“A1”).CurrentRegion.Rows.Count


我希望,我解释得足够好了。谁能解释一下,我为什么会有这个问题?搜索该问题非常令人沮丧,我真的很想使用原始代码。

发生错误时
n
的值是多少?11,我在表中有10行。当发生错误时,如果您:
,您能在即时窗口中看到发生的情况吗?shData.Range(“a11”).address
如果我把它放在shData.Range(“A”&n).Value=nameBox.Value前面,那么该行就会发生错误。当我将鼠标悬停在那条线上时,我看到
shData.Range(“a11”).Address=“$A$11”
老实说,我认为您的Office安装可能有问题。您能否尝试在其他计算机上运行此工作簿,以查看问题是否可以重现?