自动文本大写Excel VBA

det*_*lly 2 excel formatting vba excel-vba

我目前正在尝试根据工作表更改编写一个宏,其中表列中的字母会自动转换为大写.因此,例如,如果我将"abcde-12345-678"输入到单元格中,它将自动更正为"ABCDE-12345-678".在做了一些挖掘之后,我找到了一些适用于某些人的代码,但是我无法根据自己的需要进行调整.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E:E")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)

我想谈两件事.第一个是,这个代码目前不适合我.我根据作者(位于Sheet1对象中)在正确的位置.有什么想法为什么这不起作用?

第二个是我想修改代码以引用表列而不是范围.例如,我尝试将上面代码的第二行更改为以下内容(我的表名是ReviewTracker,我感兴趣的列是产品编号):

If Intersect(Target, Range(ReviewTracker[[@Headers],[Product Number]])) Is Nothing Then Exit Sub
Run Code Online (Sandbox Code Playgroud)

这返回了编译错误"Expected:list separator or)".所以它显然有些不对劲,但希望它可能有助于说明我正在努力实现的目标.

提前感谢您对此问题的任何帮助.

-Sean

Kaz*_*wor 5

第一.由于很多原因,您可以禁用事件.让我们确保您可以按照以下方式执行事件:

转到VBA编辑器>>打开立即窗口>>在那里写:Application.EnableEvents = true>>按Enter键

第二.要检查交叉点是否匹配ListObject table您内部的相应列,您需要以下内容:

If Intersect(Target, Range("ReviewTracker[Product Number]")) is Nothing Then
Run Code Online (Sandbox Code Playgroud)

假设这ReviewTracker是表名并且Product Number是表列.你不需要,#Headers因为它只会引用标题行.