我正在尝试编写一个宏来更改任何列 应自动保存工作表。
我的 Excel 工作表扩展到 G25
。
我尝试了这个,但它不起作用:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("G25")) Is Nothing Then
ActiveWorkbook.Save
End Sub
我已将其保存在 ThisWorkBook
下。
感谢任何帮助。
最佳答案
在 ThisWorkbook 下,该处理程序称为 Workbook_SheetChange
,它接受两个参数 Sh(类型为 Object
)和目标(范围
)。所以,你的代码在那里不起作用。
如果您将代码放入所需的工作表(例如 Sheet1)而不是 ThisWorkbook 中,请放入 End If
并更改范围到“A1:G25”(代表从第1行A列到第25行第25列的正方形),它应该可以工作。
这做到了:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then
MsgBox "changed"
End If
End Sub
为了完整起见,在ThisWorkbook下,这将起作用:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("A1:G25")) Is Nothing Then
MsgBox "changed"
End If
End Sub
关于Excel Worksheet_Change 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071931/