Excel VBA复选标记-返回和#x27;是';如果双击并删除

Excel VBA复选标记-返回和#x27;是';如果双击并删除,excel,vba,Excel,Vba,我使用下面的VBA代码在双击单元格时显示复选标记/勾号。有时,需要删除复选标记/勾号。要删除复选标记/勾选,需要再次双击单元格。双击以删除复选标记/勾选后,单元格将返回为空白。我的问题是,;是否可以显示“是”一词而不是将单元格留空 或者,作为更好的选择,是否可以在双击时返回单元格中的原始文本(甚至在双击单元格之前)(以删除复选标记/勾选),而不是作为空白返回 我希望这是有意义的!提前谢谢你 以下是我用于选中标记/勾选的VBA代码: Private Sub Worksheet_BeforeDoub

我使用下面的VBA代码在双击单元格时显示复选标记/勾号。有时,需要删除复选标记/勾号。要删除复选标记/勾选,需要再次双击单元格。双击以删除复选标记/勾选后,单元格将返回为空白。我的问题是,;是否可以显示“是”一词而不是将单元格留空

或者,作为更好的选择,是否可以在双击时返回单元格中的原始文本(甚至在双击单元格之前)(以删除复选标记/勾选),而不是作为空白返回

我希望这是有意义的!提前谢谢你

以下是我用于选中标记/勾选的VBA代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error GoTo 1
    If Not Intersect(Target, Range("A2:Z200")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Value = ChrW(&H2713) Then
            Target.ClearContents
            Cancel = True
        Else
            Target.Value = ChrW(&H2713)
            Cancel = True
        End If
    End If

    On Error GoTo 0
1   Application.EnableEvents = True

End Sub
要显示“是”,请更改行:

Target.ClearContents
与:

完整代码


这将用复选标记替换原始值,然后在重新单击时恢复原始值,但它仅适用于文本值,并且仅更改单元格的外观

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

    If Not Intersect(Target, Range("A2:Z200")) Is Nothing Then
        On Error GoTo haveError
        Application.EnableEvents = False
        If Target.NumberFormat Like ";;;*" Then
            Target.NumberFormat = "General"
        Else
            Target.NumberFormat = ";;;" & ChrW(&H2713)
        End If
        Cancel = True
    End If

haveError:
    Application.EnableEvents = True

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

    On Error GoTo 1
    If Not Intersect(Target, Range("A2:Z200")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Value = ChrW(&H2713) Then
            Target.Value = "YES"
        Else
            Target.Value = ChrW(&H2713)
        End If
        Cancel = True
    End If

    On Error GoTo 0
1   Application.EnableEvents = True

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

    If Not Intersect(Target, Range("A2:Z200")) Is Nothing Then
        On Error GoTo haveError
        Application.EnableEvents = False
        If Target.NumberFormat Like ";;;*" Then
            Target.NumberFormat = "General"
        Else
            Target.NumberFormat = ";;;" & ChrW(&H2713)
        End If
        Cancel = True
    End If

haveError:
    Application.EnableEvents = True

End Sub