VBA错误9无法找到解决方案

时间:2016-07-18 08:04:50

标签: vba excel-vba excel

我在这里阅读了很多关于运行时错误9的文章,但没有设法理解它如何应用于我的案例。我对VBA也很陌生,所以如果这与基础知识有道歉......

无论如何,我试图将范围(" A39:D39")复制到另一张表中三个表之一的下一个可用行。哪个表(顺便说一下,没有特别格式化为表格)取决于用户在列表框中给出的输入。

这是我的代码:

Sub ListBoxValue_Method3()

    Worksheets("Calculations").Activate

     Dim lbValue As Integer

    lbValue = Worksheets("Calculations").ListBoxes("List Box 8").Value

    Worksheets("Calculations").Range("A39:D39").Copy


Select Case lbValue

    Case 1

    Worksheets("Dashboard").Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

    Case 2

    Worksheets("Dashboard").Range("H" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues   %%%%%ERROR HERE%%%%%

    Case 3

    Worksheets("Dashboard").Range("N" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

    Case Else

    MsgBox ("Check input")

End Select


End Sub

错误是:

Run-time error '9':

Subscript out of range

我正在使用Excel 2016(365)。 提前感谢任何愿意花时间看的人。

2 个答案:

答案 0 :(得分:0)

你似乎使用MAC,我没有。

但你可以试试这段代码

Sub ListBoxValue_Method3()
    Dim lbValue As Integer

    With Worksheets("Calculations")
        lbValue = .OLEObjects("List Box 8").Object.value

        With .Range("A39:D39")
            Select Case lbValue
                Case 1
                    Worksheets("Dashboard").Range("B" & Rows.Count).End(xlUp).offset(1, 0).Resize(, .Columns.Count).value = .value
                Case 2
                    Worksheets("Dashboard").Range("H" & Rows.Count).End(xlUp).offset(1, 0).Resize(, .Columns.Count).value = .value
                Case 3
                    Worksheets("Dashboard").Range("N" & Rows.Count).End(xlUp).offset(1, 0).Resize(, .Columns.Count).value = .value
                Case Else
                    MsgBox ("Check input")
            End Select
        End With
    End With
End Sub

我认为你的“列表框8”列表框是一个“ActiveX”列表

答案 1 :(得分:0)

始终确保表格的名称正确 - .-'

代码很好,只是一个不存在的工作表。

如何错过最简单的事情可能需要很长时间才能实现!