我在下面的主题中使用了Siddharth Rout中的代码来大写所选列,但遇到了错误' 13' MISMATCH当我在一个列上使用它时,其中的单元格具有某些范围内的公式。
Excel VBA - Capitalizing all selected cells in column on double click
以下是处理来自上述链接的非基于公式的列数据的代码:
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
我搜索了论坛,但没有找到与此相关的细节。所以我用谷歌搜索了,而且埃塞尔先生有这个代码,但仍然给出了错误&#39;当我清除了错误信息时,所有内容都被大写了。有没有办法消除这个错误?
以下是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
答案 0 :(得分:1)
检查Cell是否有公式和/或错误,如果是,则忽略。
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