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