Excelを使っていて、次のような状態に困ったことはありませんか?
- 数値なのに左寄せになっている
- 日付が文字列扱いになって計算できない
- CSVを貼り付けたら表示形式がバラバラ
- どこかに「文字列」や「ユーザー定義」が残っている
こういうとき、原因はほとんどの場合セルの表示形式です。
手作業で1セルずつ直すのは大変なので、 今回はExcelVBAで表示形式を一括で「標準」に戻すマクロを紹介します。
この記事でできること
- 指定範囲の表示形式を一括で「標準」に戻す
- シート全体をまとめてリセット
- 数値・日付・文字列の崩れを修正
- CSV貼り付け後の後処理に使える
「表示形式が崩れる」とはどういう状態?
Excelでは、見た目が同じでも内部的な表示形式が違うことがあります。
- 数値なのに「文字列」扱い
- 日付なのに文字として保存されている
- ユーザー定義形式が残っている
これらは「標準」表示形式に戻すことで解決するケースが非常に多いです。
基本:選択範囲の表示形式を「標準」に戻すマクロ
まずは一番安全な、選択範囲だけを対象にする方法です。
Option Explicit
Sub ResetFormat_Selection()
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してください。", vbExclamation
Exit Sub
End If
Selection.NumberFormat = "General"
MsgBox "選択範囲の表示形式を標準に戻しました。", vbInformation
End Sub
表示が崩れているセルを選んで実行するだけなので、初心者にもおすすめです。
シート全体の表示形式を一括で標準に戻すマクロ
「このシートは全部おかしい…」という場合はこちらが便利です。
Option Explicit
Sub ResetFormat_Sheet()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.UsedRange.NumberFormat = "General"
MsgBox "シート全体の表示形式を標準に戻しました。", vbInformation
End Sub
注意点
UsedRange を使うため、過去に使ったセルも対象になる場合があります。
気になる場合は、実行前に不要な行・列を削除してください。
実務でよくある:数値・日付を「正しい型」に直す
表示形式を直しても、内部的に文字列のままな場合があります。
その場合は、次の処理を組み合わせると効果的です。
① 数値として再認識させる
cell.Value = cell.Value
② 日付として再認識させる
cell.Value = CDate(cell.Value)
表示形式リセット+再認識をまとめて行うマクロ
以下は、選択範囲を対象に表示形式を標準に戻し、値を再セットする実務向けコードです。
Option Explicit
Sub ResetFormatAndReapply()
Dim cell As Range
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してください。", vbExclamation
Exit Sub
End If
For Each cell In Selection.Cells
If Not IsError(cell.Value) Then
cell.NumberFormat = "General"
cell.Value = cell.Value
End If
Next cell
MsgBox "表示形式と値の再設定が完了しました。", vbInformation
End Sub
CSV貼り付け後の後処理マクロとして非常に使いやすいです。
よくある質問
Q. 書式(色・罫線)も消えますか?
いいえ。NumberFormat だけを変更しているため、色や罫線はそのまま残ります。
Q. 数式はどうなりますか?
数式は維持されます。
ただし、cell.Value = cell.Value を使う場合は、数式が値に変わるため注意してください。
実行手順
- Excelで対象シートを表示
- Alt + F11 → 標準モジュールを追加
- マクロを貼り付け
- 範囲を選択して実行(またはシート全体)
まとめ:表示形式リセットは「Excelおかしい問題」の特効薬
Excelの「なんか計算できない」「表示がおかしい」問題は、 表示形式が原因であることが非常に多いです。
- CSV貼り付け後
- 他人が作ったExcel
- 古いファイルを再利用したとき
今回のマクロを1つ持っておくだけで、 こうしたトラブルを一発で解消できます。
ぜひ、あなたのVBA「お助けツール」として活用してみてください。


コメント