Excel VBA – 使用公式将列中的所有选定单元格大写

我在下面的线程中使用了Siddharth Rout中的代码来大写选定的列,但是当我在具有某些范围内的公式的单元格的列上使用它时,却遇到了错误“13”MISMATCH。

Excel VBA – 双击列中所有选中的单元格大写

以下是从上述链接处理非基于公式的列数据的代码:

Sub ChangeToUpper() Dim rng As Range '~~> Check if what the user selected is a valid range If TypeName(Selection) <> "Range" Then MsgBox "Select a range first." Exit Sub End If Set rng = Selection rng = WorksheetFunction.Transpose(Split(UCase(Join( _ WorksheetFunction.Transpose(rng), vbBack)), vbBack)) End Sub 

我search了论坛,没有find与此相关的细节。 所以我GOOGLE了它和Mr.Excel有这个代码,但仍然给错误'13',当我清除了错误信息的一切都大写。 有没有办法消除这个错误?

这是来自Mr.Excel的代码:

 Sub MyUpperCase() Application.ScreenUpdating = False Dim cell As Range For Each cell In Range("$A$1:" & Range("$A$1").SpecialCells(xlLastCell).Address) If Len(cell) > 0 Then cell = UCase(cell) Next cell Application.ScreenUpdating = True End Sub 

检查单元是否有公式和/或错误,如果是,则忽略。

  Sub MyUpperCase() Application.ScreenUpdating = False Dim cell As Range For Each cell In Range("$A$1:" & Range("$A$1").SpecialCells(xlLastCell).Address) '/ Exclude errors If Not IsError(cell) Then If Len(cell) > 0 And Not cell.HasFormula Then cell = UCase(cell) End If End If Next cell Application.ScreenUpdating = True End Sub