![如何使用 VBA 自动将 Excel 中的选定列设置为大写格式?](https://linux22.com/image/1565625/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20VBA%20%E8%87%AA%E5%8A%A8%E5%B0%86%20Excel%20%E4%B8%AD%E7%9A%84%E9%80%89%E5%AE%9A%E5%88%97%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%A4%A7%E5%86%99%E6%A0%BC%E5%BC%8F%EF%BC%9F.png)
我正在尝试自动将 B 列和 C 列中键入的文本格式化为大写,但在正确设置列目标时遇到了麻烦。
我在 Excel 帮助论坛上找到了这段代码,但是我知道此代码将前八列设置为目标。因此,请帮我修改一下,以便将 B 列和 C 列设置为目标。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column > 8 Then Exit Sub
On Error GoTo ErrHandler
Application.EnableEvents = False
Target.Formula = UCase(Target.Formula)
ErrHandler:
Application.EnableEvents = True
End Sub
答案1
因此,请帮我修改一下,以便将 B 列和 C 列设置为目标。
最简单的解决方案是执行以下操作:
添加新的第二行:
If Target.Column = 1 Then Exit Sub
改成:
8
3
If Target.Column > 3 Then Exit Sub
因此您的代码现在如下:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 Then Exit Sub
If Target.Column > 3 Then Exit Sub
On Error GoTo ErrHandler
Application.EnableEvents = False
Target.Formula = UCase(Target.Formula)
ErrHandler:
Application.EnableEvents = True
End Sub
答案2
代码使用一种方法来排除列,并在不是正确的列时退出子列。您可以使用不同的方法来命名(包括)您想要监视的列,如下所示:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
if not intersect(target,Range("B:C")) = nothing then
' run the code
end if
end sub
通过这种方法,您还可以用一行代码查看多个不连续的列。例如,在 B、F 和 Z 列上运行代码
if not intersect(target,Range("B:B", "F:F", "Z:Z")) = nothing then