Excel VBA双击功能,可以交替显示两个文本

时间:2016-12-13 13:04:15

标签: excel vba double-click

我正在尝试在单元格中创建Excel VBA代码,通过双击单元格来替换“IN”和“OUT”。 看起来我必须在Sheet1而不是模块中使用: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,取消为布尔值)

在同一个Sheet1中,我已经在另一个单元格中具有相同的功能,该单元格交替“运行中”,“失败”和“不运行”,这非常有用。

当我尝试复制代码并使用不同的范围名称执行时,我收到“检测到模糊名称”的编译错误消息。

如何避免错误消息并使其正常工作?

任何帮助都非常感激。

1 个答案:

答案 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,以便停止编辑单元格。

Sheet1 Codemodule

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