Vba 下标超出范围的打印单元

Vba 下标超出范围的打印单元,vba,excel,Vba,Excel,我的问题是下面一行的单元格开始累加 currentsheet.Cells(b,a)=currentsheet.Cells(b,a)+工作簿(d).Sheets(c).Cells(b,a) 它把我甩了 下标超出范围 我的代码应该是从三个不同工作簿的多个图表中提取数字,并将其放入另一个工作簿的一个主工作表中,同时添加每个图表中的所有数字。所有工作表的名称和格式都类似 Sub bringbookstogether() Dim currentsheet As Worksheet Set current

我的问题是下面一行的单元格开始累加

currentsheet.Cells(b,a)=currentsheet.Cells(b,a)+工作簿(d).Sheets(c).Cells(b,a)

它把我甩了

下标超出范围

我的代码应该是从三个不同工作簿的多个图表中提取数字,并将其放入另一个工作簿的一个主工作表中,同时添加每个图表中的所有数字。所有工作表的名称和格式都类似

Sub bringbookstogether()

Dim currentsheet As Worksheet
Set currentsheet = Application.ActiveSheet

'assigns the number to start with
Dim a, b, c, d As Integer

a = 4
b = 6
c = 3
d = 1

Dim wsheet As Worksheet
Set wsheet = Application.ActiveWorkbook.Sheets(c)

Dim wbook As Workbook

'assigns workbook numbers
If (d = 1) Then
    Set wbook = Workbooks.Open("C:\Users\mminchuk\Documents\Updated MaintPrep Sheets\MaintPrep Sheet 1st.xlsm", UpdateLinks:=xlUpdateLinksAlways)
    Else
    If (d = 2) Then
        Set wbook = Workbooks.Open("C:\Users\mminchuk\Documents\Updated MaintPrep Sheets\MaintPrep Sheet 2nd.xlsm", UpdateLinks:=xlUpdateLinksAlways)
        Else
        If (d = 3) Then
            Set wbook = Workbooks.Open("C:\Users\mminchuk\Documents\Updated MaintPrep Sheets\MaintPrep Sheet 3rd.xlsm", UpdateLinks:=xlUpdateLinksAlways)
        End If
    End If
End If

Application.ScreenUpdating = False

'End if it's done with all the workbooks

Do Until (d = 4)

'Looks for the sheet that has the same name
If (wsheet.Name = currentsheet.Name) Then


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

    If a = 51 Then

        If b = 99 Then

        End If
    End If
End If


d = d + 1
Loop

Application.ScreenUpdating = True

End Sub

Set wsheet=Application.ActiveWorkbook.Sheets(c)
是否希望
wsheet
始终作为ActiveWorkbook的第三张工作表?它不是那样工作的。您需要在每次工作簿更改时设置它。你的代码真是一团糟。这样做不需要if语句和循环。想想你的方法。它肯定需要一些帮助,但这正是我们的用武之地。每次通过B&A都会增加。我打赌它很快就会超出范围。您可以在单元格和工作簿上循环,因为它们是作为集合键入的<代码>for loops可能更容易阅读。@Jimmy Smith在上一个问题中,我问了一些人关于正在发生的崩溃的问题,他们告诉我这是因为我有太多的循环为什么abcd变量?这些可以更恰当地命名。您打开了多少工作簿?显然,您打开了包含宏的工作簿,并且您的代码打开了另一个工作簿(“MaintPrep Sheet 1st.xlsm”),但是,除非在代码开始时打开了其他工作簿,
workbook(3)
将给出错误,因为您只打开了两个工作簿。
Set wsheet=Application.ActiveWorkbook.Sheets(c)
是否希望
wsheet
始终成为activeworkbook的第三页?它不是那样工作的。您需要在每次工作簿更改时设置它。你的代码真是一团糟。这样做不需要if语句和循环。想想你的方法。它肯定需要一些帮助,但这正是我们的用武之地。每次通过B&A都会增加。我打赌它很快就会超出范围。您可以在单元格和工作簿上循环,因为它们是作为集合键入的<代码>for loops可能更容易阅读。@Jimmy Smith在上一个问题中,我问了一些人关于正在发生的崩溃的问题,他们告诉我这是因为我有太多的循环为什么abcd变量?这些可以更恰当地命名。您打开了多少工作簿?显然,您打开了包含宏的工作簿,并且您的代码打开了另一个工作簿(“MaintPrep Sheet 1st.xlsm”),但是,除非在代码开始时打开了其他工作簿,
工作簿(3)
将给出错误,因为您只打开了两个工作簿。