簡體   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