我正在尝试在单元格中创建Excel VBA代码,通过双击单元格来替换“IN”和“OUT”。 看起来我必须在Sheet1而不是模块中使用: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,取消为布尔值)。
在同一个Sheet1中,我已经在另一个单元格中具有相同的功能,该单元格交替“运行中”,“失败”和“不运行”,这非常有用。
当我尝试复制代码并使用不同的范围名称执行时,我收到“检测到模糊名称”的编译错误消息。
如何避免错误消息并使其正常工作?
任何帮助都非常感激。
答案 0 :(得分:0)
Workbook Codemodule接收所有工作表的事件
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh Is Sheet1 Then
If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
Target.Value = IIf(Target.Value = "OUT", "IN", "OUT")
Cancel = True
End If
End If
End Sub
或者,您可以将DoubleCLick
事件参数传递给子。确保您通过Cancel
ByRef
,以便停止编辑单元格。
Sub Sheet1BeforeDoubleClick(ByVal Target As Range,ByRef Cancel As Boolean)
If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
Target.Value = IIf(Target.Value = "OUT", "IN", "OUT")
Cancel = True
End If
End Sub
Sub Sheet1BeforeDoubleClick(ByVal Target As Range,ByRef Cancel As Boolean)
If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
Target.Value = IIf(Target.Value = "OUT", "IN", "OUT")
Cancel = True
End If
End Sub