2016-07-15 8 views
0

次のスレッドでSiddharth Routのコードを使用して、選択した列を大文字にしましたが、エラー '13'のミスマッチが発生しました。いくつかの範囲の数式。ここでExcel VBA - 式で列内の選択したすべてのセルを大文字にする

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 

私は、フォーラムを検索し、これに関連する詳細を見つけることができませんでした。だから私はそれをgoogledと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 
+0

フォーミュラが必要ですか?数式を値に変換するコード行を追加するのが最も簡単な解決策ですか? – StevenWalker

+0

私はこれを可能な修正と見ていきます。ありがとうございます。 –

+0

使用範囲にアクセスし、すべてをコピーして特殊な値を貼り付けます。私は頭の上から正確な構文を覚えていませんし、携帯でも、あなたは簡単にグーグルの例を見つけるでしょう。あなたの数式をそのまま残すことができるので、投稿された他のソリューションが好ましいです – StevenWalker

答えて

1

チェックはい、その後無視すると、細胞は、式およびまたはエラーを持っている場合。

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 
+0

この変更はまだエラー '13'に生じました。再度エラーをクリアすると、シート全体が大文字になりました。これが起こる数式を使ったシート上にしかないようです。助けをありがとう、私は回避策を見つける必要があります。 –

+0

セルにエラーがありますか?もしそうなら、それをチェックし、IsErrorを使って除外します。私は答えを更新しました。 – cyboashu

+0

いいえ、エラーはありません。しかし、チップをありがとう。 –

関連する問題