【发布时间】:2026-01-04 21:10:01
【问题描述】:
我正在尝试编写代码以将某些范围的数据从每张表复制到摘要表中。我已经尝试了很多版本(太多了,我无法将它们全部放在这里),但是每个摘要表都有空值。我不明白出了什么问题,我也没有理论。
这是我自己写的版本。我尝试的所有其他变体都是在 Internet 上找到的:
注意:实际的摘要表是在代码的其他地方创建的。另外,我的 sheetIndex 从 6 开始的原因是因为这是我要从中获取数据的第一张表。
Sub PopulateSummary()
Dim nmbrParts As Integer
Dim partIndex As Integer
Dim sheetIndex As Integer
Dim sheetCount As Integer
sheetCount = ThisWorkbook.Sheets.Count
for sheetIndex = 6 To sheetCount
With Sheets(sheetIndex)
.Activate
.Range("B2").Select
Call SelectFirstToLastInColumn
nmbrParts = Selection.Count
Sheets("Summary").Activate
for partIndex = 1 To nmbrParts
row = partIndex + 1
Sheets("Summary").Cells(row, 1).Value = .Cells(row, 1).Value
Sheets("Summary").Cells(row, 2).Value = .Cells(row, 2).Value
Sheets("Summary").Cells(row, 3).Value = .Cells(row, 4).Value
Sheets("Summary").Cells(row, 3).Value = .Cells(row, 3).Value
Sheets("Summary").Cells(row, 5).Value = .Cells(row, 6).Value
Next partIndex
End With
Next sheetIndex
结束子
编辑:我想出了一些办法。由于我是从另一个工作簿调用这些宏,因此我将 ThisWorkbook 更改为 ActiveWorkbook,因此它计算了正确的工作表数。但是问题并没有解决。
【问题讨论】:
-
您能否逐步运行宏(在 Visual Basic 窗口中按 F8)并暂停“nmbrParts = Selection.Count”。检查单元格是否实际被选中,如果是,则继续执行“.Cells(row, 1).Value”并确定该值是否是您想要的值。添加一个手表以在 Watches 窗口中显示值。