如何使用 VBA 自动将 Excel 中的选定列设置为大写格式?

如何使用 VBA 自动将 Excel 中的选定列设置为大写格式?

我正在尝试自动将 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
    
  • 改成:83

    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

相关内容