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