VBA 将范围转换为大写

VBA Convert Range to Uppercase

我想在 Excel Table 中将范围(从“I5”到最后一个单元格)转换为大写 我计算了最后一个 Cell 并尝试将其放入我的代码中,但它总是说“需要对象” 我究竟做错了什么? 这是我的代码的一部分。

Dim rng As String

rng = Range("I5").SpecialCells(xlCellTypeLastCell).Address(RowAbsolute:=False, ColumnAbsolute:=False)

["I5:" & rng] = [INDEX(UPPER("I5:" & rng),)]

方括号是另一个宇宙。他们期望一个常量并且遵守公式语法,而不是 VBA.

对于固定范围,您可以使用 = [INDEX(UPPER(I5:I20), )](注意地址周围没有 ")。如果您尝试将 rng 放在那里,它将被理解为 Excel 函数(不存在)的名称。

如果你想保留方括号方法(我假设避免显式 For 循环),然后尝试

Range("I5:" & rng).Value = Application.Evaluate("INDEX(UPPER(I5:" & rng & "), )")