Vba #价值!使用评估索引引用单个单元格范围时出错

Vba #价值!使用评估索引引用单个单元格范围时出错,vba,excel,evaluate,Vba,Excel,Evaluate,我想将Excel中的选定范围转换为大写。 这是我的密码 Dim rng As Range Set rng = Selection rng.Value = rng.Parent.Evaluate("INDEX(UPPER(" & rng.Address & "),)") 它在大范围内工作,但给出了#值!仅选择单个单元格时出错。此代码适用于单个单元格或选择: Sub ChangeCellCase() Dim CellCase For Each CellCase In Se

我想将Excel中的选定范围转换为大写。 这是我的密码

Dim rng As Range
Set rng = Selection
rng.Value = rng.Parent.Evaluate("INDEX(UPPER(" & rng.Address & "),)")

它在大范围内工作,但给出了#值!仅选择单个单元格时出错。

此代码适用于单个单元格或选择:

Sub ChangeCellCase()

Dim CellCase

   For Each CellCase In Selection
      CellCase.Value = UCase(CellCase.Value)
   Next

End Sub
  • 如果选择了整列或整行,请将所选内容缩减到已使用的范围
  • 如果只选择了单个单元格,则处理单个单元格;批量处理任意多个单元格选择

    Dim rng As Range
    Set rng = Intersect(Selection, Selection.Parent.UsedRange)
    If rng.Cells.Count > 1 Then
        rng.Value = Application.Evaluate("INDEX(UPPER(" & rng.Address & "),)")
    Else
        rng = UCase(rng.Value)
    End If
    

  • 这是一个函数还是一个宏?请注意,如果将其应用于许多单元格,这可能需要一些时间。将整个范围放入内存,将其转换为大写,然后一次性将其写回工作表会更快。如果用例是少量单元,那么这可能不值得研究。