选择工作簿时,下标超出范围

时间:2017-07-03 13:35:45

标签: excel vba excel-vba compiler-errors

当我试图让excel选择使用哪个工作簿时,它会给出一个下标超出范围的错误。我不知道是否必须引用它来自哪个文件夹。它们都在同一个文件夹中。我查看了其他人的解决方案,但我既没有相同的格式也没有任务。错误位于分配工作簿编号的行

Sub bringbookstogether()

Dim currentsheet As Worksheet
Set currentsheet = Application.ActiveSheet

Dim othersheets As Worksheet

Dim wbook As Workbook

Dim c As String

'assigns the number to start with

Dim a, b, d As Integer

a = 4
b = 6
d = 1

'assigns workbook numbers
If (d = 1) Then
    Set wbook = Workbooks("MaintPrep Sheet 1st")
    Else
    If (d = 2) Then
        Set wbook = Workbooks("MaintPrep Sheet 2nd")
        Else
        If (d = 3) Then
            Set wbook = Workbooks("MaintPrep Sheet 3rd")
        End If
    End If
End If

'End if it's done with all the workbooks

Do Until (d = 4)

'Looks for the sheet that has the same name

Do While (c = currentsheet.Name)

'Ends in row 99

Do While (b < 99)

'Ends in Column 52

Do While (a < 52)

currentsheet.Cells(b, a) = currentsheet.Cells(b, a) + Workbooks(d).Sheets(c).Cells(b, a)

a = a + 1
Loop

b = b + 1
Loop

Loop

d = d + 1
Loop

End Sub

1 个答案:

答案 0 :(得分:0)

首先,最好使用完整的文件名: Workbooks("MaintPrep Sheet 1st.xlsx")等。

其次,只要您当前未尝试访问其中一个工作簿,此代码就会出错。如果工作簿未打开,则它在当前上下文中不存在,因此Excel将抛出错误91.

要解决这个问题,你可以这样做:

Sub a()
Dim wb As Workbook

On Error Resume Next 'To avoid error 91
Set wb = Workbooks("MaintPrep Sheet 1st.xlsx")
On Error GoTo 0 'To avoid not seeing other errors.

If Not wb Is Nothing Then
    'Do stuff
    MsgBox "Opened!"
Else
    'Handle the fact that it's missing
    MsgBox "Not open!"
End If

'Alternatively, OPEN the workbook if you couldn't set it in the first place:
On Error Resume Next
Set wb = Workbooks("MaintPrep Sheet 1st.xlsx")
On Error GoTo 0

If wb Is Nothing Then
    Set wb = Workbooks.Open("C:\FullPath\MaintPrep Sheet 1st.xlsx")
    'Do stuff
End If

End Sub