![工作表变更](https://linux22.com/image/1573566/%E5%B7%A5%E4%BD%9C%E8%A1%A8%E5%8F%98%E6%9B%B4.png)
我正在尝试整理一个可以添加时间戳的宏。
我有 2 张纸input
,dashboard
当单元格 A2 发生input
变化时,我希望在单元格 M8 上使用该函数dashboard
我在工作表上按下 alt + F11input
来调出 vba 编辑器并使用:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
Sheets("Dashboard").Select
Range("M8").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub
它失败在以下行:
Range("M8").Select
代码有什么问题?
答案1
这是因为在工作表代码中,如果您没有指定范围的父级,它会假定代码所在的工作表不是活动工作表(如模块)。因此,input
不再处于活动状态时,您无法选择该工作表中的单元格。
你可以用这一行替换 IF 中的所有内容:
Worksheets("Dashboard").Range("M8").Value2 = Now()
它将把当前日期/时间粘贴为一个值而不是公式,无需选择或激活任何东西。