首页 > 解决方案 > ThisWorkbook.Sheets("Sheet1") 生成运行时错误“9”下标超出范围

问题描述

我正在尝试构建一个用户表单来输入新行(标题后的第一行)。

用户窗体包含 6 个字段,其中 4 个是组合框(列表)和 2 个文本框。

当我运行代码时,它会卡在:Set ssheet = ThisWorkbook.Sheets("Sheet1")

Private Sub CommandButton1_Click()
    Dim ssheet As Worksheet

    Set ssheet = ThisWorkbook.Sheets("Sheet1")

    nr = ssheet.Cells(Rows.Count, 1).End(x1Up).Row + 1

    ssheet.Cells(nr, 1) = Me.tbNAME
    ssheet.Cells(nr, 2) = Me.cmbStatus
    ssheet.Cells(nr, 3) = Me.cmbFunds
    ssheet.Cells(nr, 4) = Me.cmbDD
    ssheet.Cells(nr, 7) = Me.cmbDistributor
    ssheet.Cells(nr, 8) = Me.tbComments

End Sub

Private Sub UserForm_Initialize()
    Me.tbDate = Date

    For Each blah In [StatusList]
        Me.cmbStatus.AddItem blah
    Next blah

    For Each blah In [FundsList]
        Me.cmbFunds.AddItem blah
    Next blah

    For Each blah In [DDList]
        Me.cmbDD.AddItem blah
    Next blah

    For Each blah In [DistributorList]
        Me.cmbDistributor.AddItem blah
    Next blah

End Sub

标签: excelvba

解决方案


使用线路时:

Set ssheet = ThisWorkbook.Sheets("Sheet1")

确保"Sheet1"实际上是工作簿上工作表的名称

根据您的评论,您可以使用:

Set ssheet = ThisWorkbook.Sheets(1)或者Set ssheet = ThisWorkbook.Sheets("Master Log")

对于以下行:

nr = ssheet.Cells(ssheet.Rows.Count, 1).End(xlUp).Row + 1

推荐阅读