通过单击在单元格中插入字符

时间:2014-10-06 08:46:08

标签: excel excel-vba vba

如何通过简单地点击Excel单元格中的字符?再次单击单元格将从单元格中删除该字符。

实施例: 我有一个细胞范围,A1:A10。如果我点击此范围内的单元格" X"插入该特定单元格,再次单击它将删除" X"。

可以通过分配给宏的按钮进行吗? (该按钮将分配给特定的单元格)

3 个答案:

答案 0 :(得分:2)

  

我有一个细胞范围,A1:A10。如果我点击此范围内的单元格,则在该特定单元格上插入“X”,再次单击它将删除“X”。

使用Worksheet_BeforeDoubleClick时必须非常小心。如果您不在代码中处理,那么只要双击,代码就会触发。同样使用Cancel = True,否则可能会产生不良后果。

这是你在尝试的吗?

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

    '~~> Check if the double click happened in Range A1:A10
    '~~> Also notice the placement of `Cancel = True`   
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        '~~> Check if the cell is empty
        If Len(Trim(Target)) = 0 Then
            Target.Value = "X"
            Cancel = True
        '~~> Check if the cell already has X. This is to ensure that
        '~~> the cell is not cleared if the user has typed something
        '~~> else in the cell.
        ElseIf UCase(Trim(Target)) = "X" Then
            Target.ClearContents
            Cancel = True
        End If
    End If
End Sub

答案 1 :(得分:0)

我建议使用双击来输入/删除值。如果你没有使用双击..那么这里是代码:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

If IsEmpty(Target.Cells) Then

Target.Cells.Value = "x"

Else: Target.Cells.Clear

End If

Cancel = True

End Sub

代码需要放在ThisWorkbook对象

答案 2 :(得分:-1)

这似乎不是一个好方法。为什么不使用下拉菜单? 转到数据 - >验证选择列表。您可以从Excel范围中选择选项列表,也可以直接指定列表,如“Item1; Item2”等。

使用任何VBA都会阻止在Excel中使用撤消功能 - 任何时候在Excel中执行宏都会清除所有撤消历史记录。这在进行更改时非常不方便。