Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 VBA在多个工作表中循环_Vba_Excel - Fatal编程技术网

Excel VBA在多个工作表中循环

Excel VBA在多个工作表中循环,vba,excel,Vba,Excel,这里是VBA初学者,我正在编写的程序有点问题 我需要从第一张工作表中复制B列最后一个单元格中的数据,并将其粘贴到另一张工作表xws中的A列中,然后对其他五张包含数据的工作表重复此操作 以下是代码,它的工作方式不符合要求: Sub exercise() Dim ws As Worksheet Dim rng As Range 'Finding last row in column B Set rng = Range("B" & Rows.Count).En

这里是VBA初学者,我正在编写的程序有点问题

我需要从第一张工作表中复制B列最后一个单元格中的数据,并将其粘贴到另一张工作表xws中的A列中,然后对其他五张包含数据的工作表重复此操作

以下是代码,它的工作方式不符合要求:

Sub exercise()

    Dim ws As Worksheet
    Dim rng As Range
    'Finding last row in column B
    Set rng = Range("B" & Rows.Count).End(xlUp)

    For Each ws In ActiveWorkbook.Worksheets
        'Don't copy data from xws worksheet
        If ws.Name <> "xws" Then
            'Storing first copied data in A1
            If IsEmpty(Sheets("xws").[A1]) Then
                rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp)
            'Storing next copied data below previously filled cell
            Else
                rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            End If
        End If
    Next ws
End Sub
子练习()
将ws设置为工作表
变暗rng As范围
'正在查找B列中的最后一行
设置rng=Range(“B”和Rows.Count)。结束(xlUp)
对于ActiveWorkbook.Worksheets中的每个ws
'不从xws工作表复制数据
如果ws.Name为“xws”,那么
'在A1中存储第一个复制的数据
如果为空(图纸(“xws”)[A1]),则
rng.复制工作表(“xws”).范围(“A”和行数)。结束(xlUp)
'将下一次复制的数据存储在先前填充的单元格下方
其他的
rng.Copy Sheets(“xws”)。范围(“A”和行数)。结束(xlUp)。偏移量(1,0)
如果结束
如果结束
下一个ws
端接头
ws存在一个问题。引用,但每当我在if语句中将它放在rng之前或放在range(set rng=…)之前时,我都会得到错误


提前感谢您提供的所有指针。

您应该为循环中的每个
ws
声明
rng
,如:

Sub exercise()
    Dim ws As Worksheet
    Dim rng As Range

    For Each ws In ActiveWorkbook.Worksheets
        'Finding last row in column B
        Set rng = ws.Range("B" & ws.Rows.Count).End(xlUp) '<~~ Moved inside the loop
        'Don't copy data from xws worksheet
        If ws.Name <> "xws" Then
            'Storing first copied data in A1
            If IsEmpty(Sheets("xws").[A1]) Then
                rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp)
            'Storing next copied data below previously filled cell
            Else
                rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            End If
        End If
    Next ws
End Sub
子练习()
将ws设置为工作表
变暗rng As范围
对于ActiveWorkbook.Worksheets中的每个ws
'正在查找B列中的最后一行

设置rng=ws.Range(“B”&ws.Rows.Count).End(xlUp)”当我从活动工作表启动宏时,我只从活动工作表将相同的信息复制到工作集xws中的六个单元格(A1:A6)中。