Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从多张图纸复制,但不是从最后一行复制到一张母版中_Excel_Vba - Fatal编程技术网

Excel 从多张图纸复制,但不是从最后一行复制到一张母版中

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

对VBA来说还是新的。我正在尝试从多张图纸(不包括少数图纸)复制整行。所有图纸的标题设置相同。我试过使用case,正如你们在下面看到的,并复制到最后一行

我不知道我是如何或为什么出错的。 感谢您的帮助

     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@AdamHartnett
trg.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一起排序。现在我意识到我错在哪里了。谢谢你的帮助