繁体   English   中英

VBA运行时错误:“ 9”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM