【问题标题】:VBA Convert Range to UppercaseVBA将范围转换为大写
【发布时间】:2021-02-28 13:14:19
【问题描述】:

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

Dim rng As String

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

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

【问题讨论】:

    标签: vba range cell uppercase


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,我想避免显式的 For 循环,因为它大大提高了我的运行时间
    • @EnginTopuzoglu 显然你没有使用它properly
    • 我用过:For Each c In ws.Range("I5:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address) c.Value = UCase(c.Value) Next c
    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2021-08-20
    相关资源
    最近更新 更多