Excel 从多张图纸复制,但不是从最后一行复制到一张母版中
对VBA来说还是新的。我正在尝试从多张图纸(不包括少数图纸)复制整行。所有图纸的标题设置相同。我试过使用case,正如你们在下面看到的,并复制到最后一行 我不知道我是如何或为什么出错的。 感谢您的帮助Excel 从多张图纸复制,但不是从最后一行复制到一张母版中,excel,vba,Excel,Vba,对VBA来说还是新的。我正在尝试从多张图纸(不包括少数图纸)复制整行。所有图纸的标题设置相同。我试过使用case,正如你们在下面看到的,并复制到最后一行 我不知道我是如何或为什么出错的。 感谢您的帮助 Sub copyall() Dim wb As Workbook 'Workbook object - Always good to work with object variables Dim sht As Worksheet 'Object for handling wo
Sub copyall()
Dim wb As Workbook 'Workbook object - Always good to work with object variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Set wb = ActiveWorkbook 'Working in active workbook
Set trg = wb.Worksheets("all_rs_tenancies")
Application.ScreenUpdating = False
'We can start loop
Select Case Name
Case "data_supply", "Options", "all_rs_tenancies"
Case Else
'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
sht.Range(sht.Range("A2:AA2"), sht.Range("A2:AA2").End(xlDown)).Copy
'Put data into the Master worksheet
trg.Range("A", Rows.Count).End(xlDown).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
End Select
Application.ScreenUpdating = True
End Sub
您缺少在所有工作表中循环的代码;对每个使用
将设置sht
<代码>名称
需要对对象的引用(即sht
)。我不会使用selectcase
语句来排除这三张表(如果If
可以的话)。。。但是我们假设您将在代码中执行其他操作。这至少可以编译。如果需要,您可以从这里进行调试
Option Explicit
Sub copyall()
Dim wb As Workbook 'Workbook object - Always good to work with object variables
Dim sht As Worksheet 'Object for handling worksheets in loop
Dim trg As Worksheet 'Master Worksheet
Dim rng As Range 'Range object
Set wb = ActiveWorkbook 'Working in active workbook
Set trg = wb.Worksheets("all_rs_tenancies")
Application.ScreenUpdating = False
'We can start loop
For Each sht In wb.Worksheets
Select Case sht.Name
Case "data_supply", "Options", "all_rs_tenancies"
Case Else
'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
sht.Range(sht.Range("A2:AA2"), sht.Range("A2:AA2").End(xlDown)).Copy
'Put data into the Master worksheet
trg.Range("A", Rows.Count).End(xlDown).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
End Select
Next
Application.ScreenUpdating = True
End Sub
trg.Range(“A”,Rows.Count).End(xlDown)
trg.Range(“A”,Rows.Count).End(xlUp)是“数据供应”和“选项”工作表名称吗?您好,它仍然显示为运行时错误91对象变量未设置。是否需要将工作表设置为变量?谢谢Michael,是的,数据和选项都在工作表中names@AdamHartnett回复个人评论时,您需要使用@
符号和他们的姓名,就像我在这篇评论中所做的那样。您需要将@Tim Williams评论更改为上述内容。谢谢,我知道我错过了一些东西,但我想这就是学习的意义所在。由于某些原因,当对象范围工作表失败时,我的trg.range(“A”,Rows.count).End(xlUp).Offset(1,0).pastespecial不断出现。正如我所说,我仍在努力了解是什么导致了这些问题haha@AdamHartnetttrg.Range(“A”,Rows.Count).End(.xlUp).Offset(1,0).PasteSpecial
是错误的,因为<代码>范围在列和行之间不使用,
。正确的方法是<代码>范围(“A”&行数)。结束(xlUp)。偏移量(1,0)。粘贴特殊。您可以使用.Cells
例如.Cells(Rows.Count,1)。End(xlUp)。Offset(1,0)
,它在行和列之间使用,
。@GMalc与您和TechnoDabbler一起排序。现在我意识到我错在哪里了。谢谢你的帮助