gpt4 book ai didi

vba - Excel VBA 循环访问多个工作表

转载 作者:行者123 更新时间:2023-12-01 22:32:32 25 4
gpt4 key购买 nike

我是 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 有问题。引用,但每当我将它放在 if 语句中的 rng 之前或范围之前(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

正如您现在的代码一样,rng 将在您运行宏时指向 ActiveSheet,然后您的代码将在每次迭代时复制相同的单元格代码。

关于vba - Excel VBA 循环访问多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com