我正在尝试自动将 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