【发布时间】:2018-01-26 02:08:53
【问题描述】:
我正在尝试创建一个汇总表,其中将有 46 行数据,超过 7 列。因此,我将从 46 张表格中提取数据,并将有 7 个不同的数据点。
我可以使用偏移函数来简化此代码吗?例如
Sub AutoFillSheetNames()
Dim ActRng As Range
Dim ActWsName As String
Dim ActAddress As String
Dim Ws As Worksheet
On Error Resume Next
Set ActRng = Application.ActiveCell
ActWsName = Application.ActiveSheet.Name
ActAddress = ActRng.Address(False, False)
Application.ScreenUpdating = False
xIndex = 0
For Each Ws In Application.Worksheets
If Ws.Name <> ActWsName Then
ActRng.Offset(xIndex, 0).Value = "='" & Ws.Name & "'!" & ActAddress
xIndex = xIndex + 1
End If
Next
Application.ScreenUpdating = True
End Sub
我想链接实际的单元格,以便它们可以自动更新,并且需要 VBA,因为它将为许多具有不同选项卡名的不同 Excel 工作簿完成。例如,当我将摘要表上的单元格 F2 链接到 48 张表的第一张表上的 F2 时,此处发布的代码有效,然后将剩余 47 个单元格的公式正确输入到 F48。但是,当我想将摘要表上的单元格 H2 链接到第一表上的 G7 时,我应该在上面的代码中进行哪些更改?
【问题讨论】:
-
旁注:我几乎不建议在不使用适当错误处理的情况下避免使用
On Error Resume Next。这样,您只会忽略错误消息,但错误仍然存在,您看不到出了什么问题。 -
问题1)为什么你有47张?请考虑工作簿设计,因为这可以显着改善编码。话虽如此,您可以将所有工作表名称放入一个数组并循环遍历该数组