【问题标题】:Excel VBA DoubleClick: Replace number with symbolExcel VBA DoubleClick:用符号替换数字
【发布时间】:2016-08-30 18:32:31
【问题描述】:

我有一个名为“Overall”的 Excel 工作表。其中,A13、B13、C13 和 D14 共列出了 4 个号码。现在将数字设置为 0、1、3 和 4。

如何使用 VBA 双击其中一个数字并将其替换为符号?例如,如果我单击位于 A13 的数字 0,我希望将数字替换为具有代码“24EA”的符号。该符号是一个 0,周围有一个圆圈。然后我希望可以单击该数字,然后将其变为没有圆圈的正常 0。

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

If Intersect(Target, Range("A13:D13")) Is Nothing Then Exit Sub 

If Target.Value = "0" Then 
    ActiveCell.FormulaR1C1 = ChrW(&H24EA) 
    With Selection.Font 
       .Name = "Calibri" 
       .Size = 16 
    End With
ElseIf ActiveCell.FormulaR1C1 = ChrW(&H24EA) Then 
    Target = "0" 
    With Selection.Font 
        .Name = "Calibri" 
        .Size = 9 
    End With
End If

这有可能吗?如果可以,如何实现?

【问题讨论】:

  • 你有没有尝试过?如果您搜索双击事件,我敢肯定那里有很多示例。
  • 我已经尝试过了,但是当我在数字 0 上单击 A13 时,我得到了这个错误:“编译错误:没有 If 的否则”。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A13:D13")) Is Nothing Then Exit Sub If Target.Value = "0" Then ActiveCell.FormulaR1C1 = ChrW(&H24EA) With Selection.Font .Name = "Calibri" .Size = 16 ElseIf ActiveCell.FormulaR1C1 = ChrW(&H24EA) Then Target = "0" With Selection.Font .Name = "Calibri" .Size = 9 End If

标签: vba excel


【解决方案1】:

将与此类似的内容添加到工作表的 VBA 模块中

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    With ActiveCell
        Select Case .Value
            Case "0": .Value = ChrW("&H24EA")
            Case ChrW("&H24EA"): .Value = 0 ' untested
            ' ...
        End Select
    End With
End Sub

【讨论】:

  • 似乎它正在工作!但是,当我再次单击 0(带圆圈的符号)时,它不会变回数字零?
  • 您不必转换它。你可以使用ChrW("&H24EA")
  • 谢谢Tim Edwards,我不知道并相应地更新了答案。 M.V.: 试着改回来,即使可能有更复杂的方法来做到这一点
  • Martin Dreher 非常感谢您!问题解决了。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With ActiveCell Select Case .Value Case "0": .Value = ChrW(9450) Case ChrW(9450): .Value = 0 Case "1": .Value = ChrW(9312) Case ChrW(9312): .Value = 1 Case "2": .Value = ChrW(9313) Case ChrW(9313): .Value = 2 Case "3": .Value = ChrW(9314) Case ChrW(9314): .Value = 3 End Select End With End Sub
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多