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)
将给出错误,因为您只打开了两个工作簿。