【问题标题】:Excel VBA double click function that alternates two texts交替两个文本的Excel VBA双击功能
【发布时间】:2017-04-28 13:24:54
【问题描述】:

我正在尝试通过双击单元格在交替“输入”和“输出”的单元格中创建 Excel VBA 代码。 看来我必须在 Sheet1 而不是模块中使用:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

在同一张 Sheet1 中,我已经在另一个单元格中具有相同的功能,交替“运行中”、“失败”和“未运行”,效果很好。

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

我怎样才能避免错误消息并使其正常工作?

非常感谢任何帮助。

【问题讨论】:

  • 帮助我们为您提供帮助,发布您当前的代码。
  • 您不需要复制函数,而是测试作为参数传入的Target 范围并采取相应措施

标签: excel vba double-click


【解决方案1】:

工作簿代码模块接收所有工作表的事件

工作簿代码模块

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 代码模块

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

结束子

标准代码模块

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

结束子

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2016-11-30
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多