一名用户在不同的问题:
A1:G12
以下是一些代码,它们将监视包含代码的任何工作表上的范围。如果r
是更改的行,则代码会将 Ar:Gr 中的所有内容复制到代码名为 shtLog 的工作表中。(代码名称是 VBA 中显示的名称,而不是 Excel 中选项卡上的名称。)这应该会让您朝着正确的方向前进。Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Integer Dim c As Integer Dim arr(1 To 1, 1 To 12) If Not Intersect(Target, Range("A1:G12")) Is Nothing Then r = Target.Row For c = 1 To 12 arr(1, c) = Cells(r, c).Value Next With shtLog .Range(.Cells(.UsedRange.Rows.Count + 1, 1), .Cells(.UsedRange.Rows.Count + 1, 12)) = arr End With End If End Sub
但是,虽然我可以在模块和 VBA 编辑器中看到我使用过的代码,但我无法看到、找到、选择或运行宏,所以我不知道如何让记录器工作。
有人知道如何让代码运行以便它开始在指定的工作表中进行记录吗?
答案1
不要将其放入模块中。
每次工作表发生变化时都会自动调用此宏,正如您从其第一行看到的那样:Private Sub Worksheet_Change(ByVal Target As Range)
。
在 VBA 编辑器的左侧,双击您想要拥有宏的工作表(即您想要跟踪更改的工作表),然后将代码粘贴到右侧。
如果您想调试它,请按照以下步骤操作:
- 在工作表中进行更改,例如在单元格中输入值。代码将执行并停止在断点,在我们的例子中,在第一行,它将以黄色突出显示,如下所示:
要逐行执行代码,请按F8。它将帮助您查看每一步发生的情况。
完成调试后,你可以删除断点点击棕色斑点。
请记住,宏将值放入名为的工作表中shtLog
,您必须创建一个名为这样的工作表或在代码中更改名称,以避免出现找不到目标工作表的错误。