/ / Excel VBA - 列内の選択したすべてのセルを数式で大文字にする - excel、vba、excel-vba

Excel VBA - 数式で列内のすべての選択されたセルを大文字にする - Excel、Excel、Excel

私は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

フォーラムを検索しましたが、詳細が見つかりませんでしたこれに関連しています。だから私はそれをグーグルし、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

回答:

回答№1は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