Board logo

標題: [發問] 陣列索引超出範圍一問!! [打印本頁]

作者: lorlcool    時間: 2011-11-23 14:56     標題: 陣列索引超出範圍一問!!

假設在我的workbook底下我只有sheet(1), sheet(2), sheet(3)這三個sheets
Run下面這個code時,我讓它等於sheet(4)然後跳出下面這個MsgBox
但是,我跑到Set A = Sheets(4)時會跳出 "執行階段錯誤9 陣列索引超出範圍"
然後就中斷了,也不會印出MsgBox的內容
請問除了On Error Resume Next還有什麼方法可以解決呢

謝謝!!

'On Error Resume Next
Dim A As Worksheet

Set A = Sheets(4)
If A Is Nothing Then
    res = MsgBox("找不到該sheet" & vbCrLf & "動作中止", vbOKOnly + vbCritical)
    Exit Sub
End If
作者: GBKEE    時間: 2011-11-23 15:34

本帖最後由 GBKEE 於 2011-11-23 15:37 編輯

回復 1# lorlcool
'On Error Resume Next   前面的紅點是註解 程式就不會執行
  1. Option Explicit
  2. Sub Ex()
  3.     Dim A As Worksheet
  4.     On Error Resume Next
  5. AA:
  6.     Set A = Sheets(4)
  7.     If A Is Nothing Then
  8.         If MsgBox("找不到該sheet" & vbCrLf & "動作中止", vbYesNo + vbCritical) = vbYes Then
  9.             Exit Sub
  10.         Else
  11.             GoTo BB:
  12.         End If
  13.     End If
  14.     Exit Sub
  15. BB:
  16.     Sheets.Add , Sheets(Sheets.Count)
  17.     GoTo AA
  18. End Sub
複製代碼

作者: lorlcool    時間: 2011-11-23 16:17

回復 2# GBKEE


感謝大大的指導
我知道前面的" ' "是註解的意思
我想知道 除了On Error Resume Next之外
有辦法解決這個問題嗎?
謝謝!
作者: GBKEE    時間: 2011-11-23 16:34

回復 3# lorlcool
那是這樣嗎?
  1. Sub Ex()
  2.     Dim A As Worksheet, i As Integer
  3.     i = 4
  4.     If i > Sheets.Count Then
  5.      MsgBox "找不到該sheet" & vbCrLf & "動作中止", vbOKOnly + vbCritical
  6.         Exit Sub
  7.     Else
  8.         Set A = Sheets(i)
  9.     End If
  10. End Sub
複製代碼

作者: lorlcool    時間: 2011-11-23 16:45

回復 4# GBKEE


嗯嗯 大概就是這個意思

謝謝大大囉

我要來消化一下 感恩




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)