【问题标题】:VBA Run-time error: '9'VBA 运行时错误:'9'
【发布时间】:2017-12-08 17:37:04
【问题描述】:

我正在尝试创建一个函数,该函数接受所选位置和日期的一些输入,然后使用日期输入,扫描匹配表以获取数据。但是,将字符串传递给 Sheets.Activate 导致我得到 ​​p>

运行时错误 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 的工作表。

【问题讨论】:

  • 您应该将您的范围引用到分配的工作表,例如ThisWorkbook.Sheets("Coverage").Range("B3")。使用selectactivate 不是一个好习惯。
  • 仔细检查单元格或工作表名称中没有空格。
  • 检查了空格,没有。而 Tehscript 我这样做的原因是因为一旦我添加了抓取一天的值,其余代码就从该表中工作,给我无用的数据,而不是使用工作日表之一。我该如何解决这个问题?
  • 好吧,由于某种原因,excel 没有按照您在该单元格中提供的名称找到工作表。如果没有看到您的实际工作簿,就无法使用来找到问题。尝试复制工作表的名称并直接粘贴到单元格中,看看是否有效。同样,我们只是猜测。
  • day = ThisWorkbook.Sheets("Coverage").Range("C3")之后添加一行:msgbox "--" & day & "--"。当你再次运行代码时它会说什么?

标签: excel vba runtime-error


【解决方案1】:

Day 是保留字,因此您不能将其用作变量。将对该变量的所有引用更改为其他内容,例如 myDay

在 VB 编辑器中,按 F2 打开对象浏览器:基本上 none 应该用于命名对象/变量/工作表/等,因为它们为 VBA 保留

如果您仍然遇到问题,请尝试在修改后的行(例如使用 myDay),在此之后:

myDay = ThisWorkbook.Sheets("Coverage").Range("C3")

...添加一行:

MsgBox "--" ActiveSheet.Name & "--" & vbcrlf & "--" & myDay& "--"

当你再次运行代码时它会说什么?

  • 这两行是否相同?

  • 如果您遇到错误,请附上错误的全文或屏幕截图,以及它破坏代码的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多