gpt4 book ai didi

vba - VBA 中的 Worksheets.Count 返回错误的页数

转载 作者:行者123 更新时间:2023-12-04 21:03:24 26 4
gpt4 key购买 nike

我有一个带有许多工作表的数据工作簿(准确地说是 3 个)。我想从每个工作表中复制数据并将它们全部添加到第二个工作簿中的一个工作表中(一个在另一个之前附加)。所有的工作表都有相同的格式和相同的列,所以我可以放心地做到这一点,而不必担心数据的一致性。问题是我使用的 for 循环运行代码 21 次,即使我只有 3 个工作表,也没有进行复制和粘贴。我使用 MsgBox 进行调试。以下是在 Windows 操作系统上用 Excel 2013 的 VBA 编辑器编写的代码:

Sub compileData()
' compile all the data in one worksheet

' defining variables
Dim i As Integer

' copy the headers
Windows("source_file.xlsx").Activate
Sheets(1).Activate
Range("A3:K3").Select
Selection.Copy
Windows("target_file.xlsx").Activate
Sheets(1).Activate
Range("A1").Select
ActiveSheet.Paste
' So far, so good! The header was copied & pasted with no problem.

For i = 1 To Workbooks("source_file.xlsx").Worksheets.Count

' copy data from source worksheet
Windows("source_file.xlsx").Activate
Sheets(i).Activate
Range("A4:K4").End(xlDown).Select
Selection.Copy

' paste data
Windows("target_file.xlsx").Activate
Sheets(1).Activate
Range("A2").End(xlDown).Offset(RowOffset:=1).Select
ActiveSheet.Paste

Next i

MsgBox i ' this returns 21 while source_file.xlsx has only 3 worksheets

End Sub

最佳答案

我不知道这个问题是否已经解决了......
我不知道原因,但对我来说,如果您在调用 sheet.count 之前激活您正在计算工作表的工作簿,它会起作用。
我知道,您明确告诉它在哪个工作簿中计算工作表,但由于某种原因,这在我之前也发生过,并且通过在计算工作表之前明确激活工作簿来解决。

关于vba - VBA 中的 Worksheets.Count 返回错误的页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138305/

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