excel - 自动文本大写 Excel VBA

标签 excel formatting 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

有两件事我想解决。首先,该代码目前不适用于我。根据作者的说法,我将它放在正确的位置(位于 Sheet1 对象中)。对于为什么这不起作用有什么想法吗?

第二个是我想修改代码以引用表列而不是范围。例如,我尝试将上述代码的第二行更改为以下内容(我的表的名称是 ReviewTracker,我感兴趣的列是 Product Number):

If Intersect(Target, Range(ReviewTracker[[@Headers],[Product Number]])) Is Nothing Then Exit Sub

这返回了一个编译错误“预期:列表分隔符或)”。所以它显然有问题,但希望它可以帮助说明我正在努力实现的目标。

预先感谢您就该问题提供的任何帮助。

-肖恩

最佳答案

首先。您可能会因多种原因而禁用事件。让我们确保您可以执行以下操作的事件:

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

第二。要检查交集是否与 ListObject 表中的适当列匹配,您需要如下所示:

If Intersect(Target, Range("ReviewTracker[Product Number]")) is Nothing Then

假设 ReviewTracker 是表名称,Product Number 是表列。您不需要#Headers,因为它仅引用标题行。

关于excel - 自动文本大写 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19497042/

相关文章:

google-sheets - 计算持续时间并以分钟和秒表示

python - 从 Python 日期/时间获取 "2:35pm"而不是 "02:35PM"?

vba - 在 Excel/VBA 中从选择中排除列

即使在 Excel 中禁用了自动更正,Python 代码也会自动将 Excel 工作表中的 "..."转换为 "…"

java - 从Excel表中读取数据并写入同一个Excel表中

r - 在 R 中为卡方检验格式化数据

Excel vba 编译错误 - 参数不可选,

vba - 我想使用一个包含公式中的单元格引用的变量

python - PyQt4 表用于从剪贴板插入表 - tableWidget?

JSON VBA 解析到 Excel