表示形式の変換する方法とは
VBAは、数値や文字列などのデータ型を他のデータ型に変換することができます。
- NumberFormatプロパティを使用する方法
- 数字の表示形式を小数点以下2桁や0.00%などパーセンテージの表記、¥#,##0など、通貨表記に変換することができます。
- Format関数を使用する方法
- 文字列に対して特定の表示形式を適用するために使用されます。
- 整数型変数を文字列に変換してフォーマットする方法
- Format関数を使用して、日付や時刻をフォーマットする方法
選択したセル範囲の表示形式を変換するコード
Sub 表示形式を変換する()
Dim iRow As Long '// 行位置
Dim iCol As Long '// 列位置
Dim iRowMax As Long '// 行数
Dim iColMax As Long '// 列数
Dim sFormatBefore As String '// 現在表示形式
Dim sFormatAfter As String '// 変換後表示形式
'// 現在の表示形式を取得
sFormatBefore = ActiveCell.NumberFormatLocal
'// 標準の場合は文字列に変換
If (sFormatBefore = "G/標準") Then
sFormatAfter = "@"
'// 文字列の場合は標準に変換
ElseIf (sFormatBefore = "@") Then
sFormatAfter = "G/標準"
End If
'// 変換後の表示形式を設定
Selection.NumberFormatLocal = sFormatAfter
'// 表示形式が文字列以外はここで処理を終了する
If (sFormatAfter <> "@") Then
Exit Sub
End If
'// 行位置、列位置、行数、列数を取得
iRow = Selection.Row
iCol = Selection.Column
iRowMax = iRow + Selection.Rows.Count - 1
iColMax = iCol + Selection.Columns.Count - 1
'// 選択セル範囲を列ごとにループ
For iCol = iCol To iColMax
If (Range(Cells(iRow, iCol), Cells(iRowMax, iCol)).Text <> "") Then
'// 区切り位置設定
Call Range(Cells(iRow, iCol), Cells(iRowMax, iCol)).TextToColumns
'Range("C3").Formula = "=INDEX(F3:F8, MATCH(B3, E3:E8))"
End If
Next
MsgBox "完了"
End Sub
解説
ActiveCell
プロパティを使って現在のアクティブなセルの表示形式を取得します。NumberFormatLocal
プロパティを使うことで、選択したセル範囲の表示形式が取得できます。If...Then...ElseIf...End If
文を使って条件分岐を行い、現在の表示形式が「G/標準」の場合は変換後の表示形式を「@」に設定し、現在の表示形式が「@」の場合は変換後の表示形式を「G/標準」に設定します。- 選択範囲の表示形式が文字列の場合、各セルの内容を区切って複数の列に分割する処理を行います。選択範囲の表示形式が文字列でない場合は、処理を終了します。
- 次に、選択範囲の行位置、列位置、行数、列数を取得し、選択範囲内の各列についてループを行います。
- 各列に対して、その列に含まれるデータが空でない場合は、
TextToColumns
メソッドを使用して、各セルの内容を区切り位置で分割します。分割されたデータは、複数の列に配置されます。
コメント