【问题标题】:Excel Macro VBA: Double click to tick issueExcel Macro VBA:双击勾选问题
【发布时间】:2019-02-09 07:46:30
【问题描述】:

如何使双击仅在第 1、2、3 和 4 列有值时起作用?我不知道我应该在哪里插入代码。就像如果第 1、2、3 和 4 列有值,那么 doubleclick.enable = TRUE else doubleclick.enable= FALSE..

请多多指教。我的代码如下:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Select Case Target.Column
        Case 6, 13
            If Not Intersect(Target, Range("F2:F13, M2:M13")) Is Nothing Then Cancel = True

        Target.Font.Name = "Times New Roman"
        If Target = "" Then
            Target = ChrW(&H2713)
        Else
            MsgBox "You cannot modify the cell."
        End If

        End Select
End Sub

【问题讨论】:

    标签: excel vba conditional-statements double-click


    【解决方案1】:

    我只是想澄清这个问题。 如果第 1 到 4 列中的任何单元格具有值,您只想调用双击过程 或者你想检查对应的行是否有值?

    对于选项 1,您可以使用

    If Application.CountA(Range("A1:D" & Rows.Count)) > 0 Then
        'Your Code
    End If
    

    第二个选项

    If Application.CountA(Range("A" & target.Row & ":D" & target.Row)) > 0 Then
        'Your Code
    End If
    

    我测试了上面的代码,如果有任何错误,我们可以修改它们

    【讨论】:

    • 嗨。感谢您的回复。我想要基于我的代码列 F 和 M 中的值。例如,只有当 A 到 D 列都有值时,F3 和 M3 才能调用双击进行刻度。如果假设 A3、B3、C3 有除 D3 以外的值,那么双击时 F3 和 M3 应该没有结果。 A 到 D 列中的任一单元格空白应禁用 F 列中的双击。
    • 第二个选项有效,但有一个问题。它在填充 A3、B3、C3 或 D3 时起作用,然后双击时 F3 显示刻度。我希望它是当所有 A3:D3 都被填充时,然后双击时才继续在 F3 中显示刻度。 A3:D3 中缺少的任何一个都应该阻止 F3 产生结果..这就是我的意思..如果我的话仍然不够清楚,我很抱歉。
    • Application.CountA(Range("A" & target.Row & ":D" & target.Row)) =4 适合你
    • 非常感谢!终于明白了!如果我需要键入类似的功能但不同的列怎么办?代码会是什么样子?
    • 如果您的列是连续的,那么您可以将 A 和 D 字母更改为 E 到 H 或任何您想要的,但如果列不连续,那么您必须使用嵌套单元格指定范围
    猜你喜欢
    • 2016-11-30
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多