【发布时间】:2018-12-12 22:51:32
【问题描述】:
如果我确认要运行它,我编写了以下调用 Private Sub Worksheet_Calculate() 的宏。请在下面找到代码的第一部分:
Sub test()
Dim result As VbMsgBoxResult
result = MsgBox("Run Macro?", vbYesNo, "Excel VBA")
If result = vbYes Then
Call Worksheet_Calculate
End If
End Sub
第二个代码,Private Sub Worksheet_Calculate(),将复制在 B2 中执行的计算结果并将其粘贴到 C2 中,并在 D2 中添加时间戳。列 C 和 D 填充为 B2 中的值更改,以便我获得 C3 和 D3、C4 和 D4 等中的结果和时间戳列表。这是代码:
Private Sub Worksheet_Calculate()
Dim lastrow As Long
lastrow = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets(1).Cells(lastrow, 2)
.Offset(1, 0) = Cells(2, 1).Value
.Offset(1, 1) = FormatDateTime(Now, vbLongTime)
End With
End Sub
我面临的问题与我的 Public Sub Worksheet_Calculate() 仅被调用一次有关,而每当我重新计算 B2 的值时,什么都没有发生。
有没有办法 a) 保持激活第二个代码或 b) 有一个按钮或复选框来激活/停用第二个代码?
希望它有意义,在此先感谢!
【问题讨论】:
-
Worksheet_Calculate代码在哪里,在工作表代码模块或常规代码模块中? -
@BigBen,我在常规代码模块中都有这两个代码,因为我希望我的代码在我打开的任何工作簿中都可用。我的意图是在功能区中有一个按钮。谢谢!
-
@BigBen,我之前没用过,但我会做一些研究并尝试理解它背后的想法,谢谢!
-
通过“激活第二个代码”,您希望第二个代码在工作簿计算时执行,对吧?