我在这里阅读了很多关于运行时错误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)。 提前感谢任何愿意花时间看的人。
答案 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)
始终确保表格的名称正确 - .-'
代码很好,只是一个不存在的工作表。
如何错过最简单的事情可能需要很长时间才能实现!