[英]VBA Run-time error: '9'
我正在尝试创建一个函数,该函数接受选定位置和日期的一些输入,然后使用日期输入,扫描匹配的表以获取数据。 但是,将字符串传递给Sheets.Activate导致我得到
运行时错误9
我不确定为什么会发生这种情况,因为其他人在堆栈溢出的类似解决方案中也这样做。 这是我的代码
Sub GatherNames()
Dim x As Integer
Dim y As Integer
Dim rowN As Integer
Dim cell As String
Dim day As String
Dim position As String
day = ThisWorkbook.Sheets("Coverage").Range("C3")
Sheets(day).Activate
Application.ScreenUpdating = False
'Acquire entire data range
NumRows = Range("B3", Range("B3").End(xlDown)).Rows.Count
NumRows = NumRows / 2
'Start at beginning of data
rowN = 3
cell = "B" & rowN
Range(cell).Select
'Run for loop to check all rows
For y = 1 To NumRows
'Get Rows Value
Range(cell).End(xlToRight).Select
'Add to list
If (ActiveCell.Value > 1) Then
Debug.Print ActiveCell.Value
End If
'Reset Cell to beginning of next Row
rowN = rowN + 2
cell = "B" & rowN
Range(cell).Select
Next
Application.ScreenUpdating = True
End Sub
我已经测试了所有代码,同时还不包括获取日期,然后激活工作日表,它工作正常,但是当我尝试输入一个字符串,然后使用
Sheets(day).Activate
它导致
运行时错误9-下标超出范围
有关更多详细信息,day的值是“ Monday”,我有一个名为Monday的表。
Day
是保留字,因此您不能将其用作变量。 将对该变量的所有引用更改为其他名称,例如myDay
。
在VB编辑器中,按F2键打开“对象浏览器”:基本上所有列出的对象都不应用于命名对象/变量/工作表/等,因为它们是为VBA 保留的。
如果仍然有问题,请尝试在修改后的行(例如,使用myDay
)上执行以下操作:
myDay = ThisWorkbook.Sheets("Coverage").Range("C3")
...添加一行:
MsgBox "--" ActiveSheet.Name & "--" & vbcrlf & "--" & myDay& "--"
当您再次运行代码时,它表示什么?
两行是否相同?
如果遇到错误,请提供错误的全文或屏幕截图,以及该错误的代码出处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.