Excel VBA – 双击时将列中的所有选定单元格大写

我有一个非常简单的VBA脚本,它将所选单元格大写:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  ActiveCell.Value = UCase(ActiveCell.Value)
End Sub

它按预期工作,但有时我想大写所选列中的所有单元格,但只有当我双击列本身时.单击列字段时似乎无法使用Worksheet_BeforeDoubleClick接收事件.

这有什么解决方法吗?

最佳答案 就像我提到的,为什么不是快捷键?您可以为宏指定快捷键,如下所示

现在,您只需选择列并按快捷键即可.

此外,这里的代码基于ONE LINER HACKPeter Albert,而不是循环遍历列中的每个单元格.

把它放在一个模块中.

Sub ChangeToUpper()
    Dim rng As Range

    '~~> Check if what the user selected is a valid range
    If TypeName(Selection) <> "Range" Then
        MsgBox "Select a range first."
        Exit Sub
    End If

    Set rng = Selection

    rng = WorksheetFunction.Transpose(Split(UCase(Join( _
          WorksheetFunction.Transpose(rng), vbBack)), vbBack))
End Sub

截图:

点赞