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 & "), )")
我想在 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 & "), )")