Excelでフォントや罫線、表示形式を設定するときに下図のように書式を変更することもVBAでは可能になっています。
書式設定の方法を詳しく説明していきます。
表示形式の設定
VBAを使用してセルの書式設定を変更するには、NumberFormatプロパティを使用します。このプロパティを設定することで、セルの表示形式を変更することができます。
数値の表示形式を変更する
Sub ChangeNumberFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式を数値に設定
ws.Range("A1").NumberFormat = "0.00"
' A1セルに数値を入力
ws.Range("A1").Value = 1234.5678
End Sub
日付の表示形式を変更する
Sub ChangeDateFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式を日付に設定
ws.Range("A1").NumberFormat = "yyyy/mm/dd"
' A1セルに日付を入力
ws.Range("A1").Value = Date
End Sub
通貨の表示形式を変更する
Sub ChangeCurrencyFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式を通貨に設定
ws.Range("A1").NumberFormat = "$#,##0.00"
' A1セルに数値を入力
ws.Range("A1").Value = 1234.5678
End Sub
このコードを実行すると「$」マークで自動で日本円の「¥」マークになります。
パーセンテージの表示形式を変更する
Sub ChangePercentageFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式をパーセンテージに設定
ws.Range("A1").NumberFormat = "0.00%"
' A1セルに数値を入力
ws.Range("A1").Value = 0.1234
End Sub
カスタム表示形式を設定する
カスタム表示形式を使用することもできます。例えば、電話番号の形式や郵便番号の形式などを設定する場合です。
Sub ChangeCustomFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式を電話番号形式に設定
ws.Range("A1").NumberFormat = "(####) ##-####"
' A1セルに電話番号を入力
ws.Range("A1").Value = 1234567890
End Sub
以上の例を参考にして、セルの表示形式を自由に変更することができます。NumberFormatプロパティを使用することで、数値、日付、通貨、パーセンテージ、カスタム形式など、さまざまな表示形式を設定できます。
特定の範囲の表示形式を設定する
特定の範囲を一気に表示形式を設定することも可能です。
Sub SetNumberFormatSpecificRange()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1からA10の範囲の表示形式をセット
ws.Range("A1:A10").NumberFormat = "0.00"
End Sub
Cellsプロパティを使用して範囲を指定することもできます。
Sub SetNumberFormatSpecificRange()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 特定の範囲をCellsプロパティで指定して表示形式を設定 (例: A1からB10)
ws.Range(ws.Cells(1, 1), ws.Cells(10, 2)).NumberFormat = "0.00"
End Sub
ユーザー定義の範囲の表示形式を設定する
ユーザーに選択させた範囲に対して表示形式を設定する方法です。
Sub SetNumberFormatUserDefinedRange()
Dim ws As Worksheet
Dim userRange As Range
Dim formatChoice As String
Set ws = ThisWorkbook.Sheets("Sheet1")
' ユーザーに範囲を選択させる
On Error Resume Next
Set userRange = Application.InputBox("表示形式を設定する範囲を選択してください:", Type:=8)
On Error GoTo 0
' ユーザーが範囲を選択した場合
If Not userRange Is Nothing Then
' ユーザーに表示形式を入力させる
formatChoice = InputBox("設定する表示形式を入力してください:", "表示形式設定")
' ユーザーが表示形式を入力した場合、その範囲の表示形式を設定
If formatChoice <> "" Then
userRange.NumberFormat = formatChoice
End If
End If
End Sub
ここに入力する表示形式は(例えば、”0.00″、”yyyy/mm/dd”、”$#,##0.00″など)を入力すると、その表示形式が選択した範囲に適用されます。
表示形式の例
数値の表示形式
項目 | 説明 | 表示方法 |
---|---|---|
整数 | 整数のみを表示します。 | ws.Range(“A1”).NumberFormat = “0” |
小数点付き数値 | 小数点以下2桁を 表示します。 | ws.Range(“A1”).NumberFormat = “0.00” |
桁区切り付き数値 | カンマで桁区切りを 表示します。 | ws.Range(“A1”).NumberFormat = “#,##0” |
パーセンテージ | パーセンテージ形式で 表示します。 | ws.Range(“A1”).NumberFormat = “0.00%” |
指数表示 | 指数形式で表示します。 | ws.Range(“A1”).NumberFormat = “0.00E+00” |
日付と時間の表示形式
項目 | 説明 | 表示方法 |
---|---|---|
標準的な日付 | 年月日の形式で 表示します。 | ws.Range(“A1”).NumberFormat = “yyyy/mm/dd” |
月/日/年 | 月/日/年の形式で 表示します。 | ws.Range(“A1”).NumberFormat = “mm/dd/yyyy” |
日付と時刻 | 日付と時刻を 組み合わせて表示します。 | ws.Range(“A1”).NumberFormat = “yyyy/mm/dd hh:mm:ss” |
時刻のみ | 時刻を表示します。 | ws.Range(“A1”).NumberFormat = “hh:mm:ss” |
通貨の表示形式
項目 | 説明 | 表示方法 |
---|---|---|
通貨記号 | 通貨記号を付けて表示します | ws.Range(“A1”).NumberFormat = “$#,##0.00” |
テキストの表示形式
項目 | 説明 | 表示方法 |
---|---|---|
テキスト形式 | 数値をテキストと して扱います。 | ws.Range(“A1”).NumberFormat = “@” |
カスタム表示形式
項目 | 説明 | 表示方法 |
---|---|---|
電話番号 | 電話番号形式で表示します | ws.Range(“A1”).NumberFormat = “(####) ##-####” |
郵便番号 | 郵便番号形式で表示します | ws.Range(“A1”).NumberFormat = “000-0000” |
テキストと 数値の組合 | テキストと数値を 組み合わせて表示します。 | ws.Range(“A1”).NumberFormat = “””答え:”” #” |
テキストと 数値の組合 | テキストと数値を 組み合わせて表示します。 | ws.Range(“A1”).NumberFormat = “””第”” #””回””” |
セルの表示形式のリセット
表示形式を標準(デフォルト)の形式に戻すには、NumberFormatプロパティを空の文字列に設定します。
個々のセルの表示形式をリセットする場合は、次のようにします。
Sub ResetNumberFormat()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1セルの表示形式をリセット
ws.Range("A1").NumberFormat = ""
End Sub
特定の範囲の表示形式をリセットする
特定の範囲の表示形式をリセットするには、Rangeプロパティを使用して範囲を指定します。
Sub ResetNumberFormatRange()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' A1からB10の範囲の表示形式をリセット
ws.Range("A1:B10").NumberFormat = ""
End Sub
Cellsプロパティを使用する事も可能です。
Sub ResetNumberFormatSpecificRange()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 特定の範囲の表示形式をリセット (例: A1:B10)
ws.Range(ws.Cells(1, 1), ws.Cells(10, 2)).NumberFormat = ""
End Sub
ユーザー定義の範囲の表示形式をリセットする
ユーザーが入力した範囲の表示形式をリセットする場合も可能です。
Sub ResetNumberFormatUserDefinedRange()
Dim ws As Worksheet
Dim userRange As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
' ユーザーに範囲を選択させる
On Error Resume Next
Set userRange = Application.InputBox("リセットする範囲を選択してください:", Type:=8)
On Error GoTo 0
' ユーザーが範囲を選択した場合、その範囲の表示形式をリセット
If Not userRange Is Nothing Then
userRange.NumberFormat = ""
End If
End Sub
シート全体の表示形式をリセットする
シート全体の表示形式をリセットする場合は、次のようにします。
Sub ResetNumberFormatSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' シート全体の表示形式をリセット
ws.Cells.NumberFormat = ""
End Sub
ワークブック全体の表示形式をリセットする
ワークブック全体の表示形式をリセットする場合は、各シートに対してリセットを行います。
Sub ResetNumberFormatWorkbook()
Dim ws As Worksheet
' すべてのシートをループ
For Each ws In ThisWorkbook.Sheets
' シート全体の表示形式をリセット
ws.Cells.NumberFormat = ""
Next ws
End Sub
以上の方法を使用して、セル、範囲、シート、またはワークブック全体の表示形式をリセットすることができます。
これにより、セルの表示形式をデフォルトの状態に戻すことができます。必要に応じて適切な方法を選んで使用してください。