我有一个非常简单的VBA脚本,它将所选单元格大写:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell.Value = UCase(ActiveCell.Value)
End Sub
它按预期工作,但有时我想大写所选列中的所有单元格,但只有当我双击列本身时.单击列字段时似乎无法使用Worksheet_BeforeDoubleClick接收事件.
这有什么解决方法吗?
最佳答案 就像我提到的,为什么不是快捷键?您可以为宏指定快捷键,如下所示
现在,您只需选择列并按快捷键即可.
此外,这里的代码基于ONE LINER HACK到Peter 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
截图: