簡體   English   中英

VBA中的運行時錯誤“ 9” [excel]-下標超出范圍

[英]Runtime error “9” in VBA[excel] - Subscript out of range

我目前正在使用一個代碼,該代碼從用戶那里獲取日期,打開日歷,查看是否存在月份,如果不存在,則創建具有該月份名稱的工作表。

代碼看起來像這樣,其中m_y是一個字符串,並具有諸如“ January 2014” [[包括“符號”的值:

Sub addmonth(m_y)
  On Error Resume Next
  CalendarWorkbook.Worksheets(m_y).Select

  If Err.Number<>0 Then
     'code to add sheet and format it

我嘗試將其放在With / End With命令中,代碼中沒有Option Explicit。 答案中提到的其他方法,例如使用.Range()代替.Select ; 但是我沒有成功的運氣。

提供的任何幫助將不勝感激。

在大多數情況下, .Select是運行時錯誤的主要原因。 我相信您還有另一本工作簿。 有趣的閱​​讀

嘗試另一種不使用.Select

Option Explicit

Sub test()
    addmonth ("""Feb2015""")
End Sub

Sub addmonth(m_y)
    Dim calendarworkbook As Workbook
    Dim ws As Worksheet

    Set calendarworkbook = ThisWorkbook

    On Error Resume Next
    Set ws = calendarworkbook.Worksheets(m_y)
    On Error GoTo 0

    If ws Is Nothing Then calendarworkbook.Worksheets.Add.Name = m_y
End Sub

注意 :應謹慎使用OERN(錯誤恢復下)。 確保僅限制您想要的部分而不是其余部分的消息。 否則它不是很好的錯誤處理:)

這對我有用

Sub test()
    addmonth ("""Feb2015""")
End Sub

Sub addmonth(m_y)
    Dim calendarworkbook As Workbook
    Set calendarworkbook = ThisWorkbook
    On Error Resume Next
    calendarworkbook.Worksheets(m_y).Select

    If Err.Number <> 0 Then
        With calendarworkbook.Worksheets.Add
            .Name = m_y
        End With
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM