我目前正在尝试根据工作表更改编写一个宏,其中表列中的字母会自动转换为大写字母。因此,例如,如果我在单元格中输入“ 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
我想谈两件事。首先,该代码当前不适用于我。根据作者(位于Sheet1对象中),我将其放置在正确的位置。有什么想法为什么这不起作用?
第二个是我想修改代码以引用表列而不是范围。例如,我尝试将上述代码的第二行更改为以下内容(我的表的名称为ReviewTracker,而我感兴趣的列为“产品编号”):
If Intersect(Target, Range(ReviewTracker[[@Headers],[Product Number]])) Is Nothing Then Exit Sub
这将返回一个编译错误“ Expected:列表分隔符或”。因此,显然有问题,但是希望它可以帮助说明我正在尝试实现的目标。
在此先感谢您的帮助。
-西恩
第一。由于种种原因,您可以禁用事件。让我们确保可以进行以下操作的事件:
转到VBA编辑器>>打开立即窗口>>在此处编写:Application.EnableEvents = true
>>按Enter
第二。要检查交点是否匹配ListObject table
您内的适当列,您需要这样的操作:
If Intersect(Target, Range("ReviewTracker[Product Number]")) is Nothing Then
假设这ReviewTracker
是表名并且Product Number
是表列。您不需要,#Headers
因为它仅引用标题行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句