目次
目的
- セルの列幅、行高を取得、設定したい。
- 標準の列幅、行高に戻したい。
取得の一例
- 白紙のワークシートでテストしてみます。
- 下記マクロを実行してみます。A1 セルの列幅と行高を取得してみます。
Sub A1セルの列幅と行高を取得()
Debug.Print Range("A1").ColumnWidth
Debug.Print Range("A1").RowHeight
End Sub- VBE のイミディエイトウィンドウに以下の内容が出力されました。
列幅は、Excel アプリの標準フォントの 1 文字の幅を 1 とするようです。「MS Pゴシック」のようなプロポーショナルフォントといわれるフォントの場合は、数字の「0」の幅を 1 とするようです。
行高の単位はポイントです。 1 ポイントは 1 インチ(25.4mm)/72 のようです。- Range.ColumnWidth プロパティ (Excel) | Microsoft Learn
- https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.columnwidth
- Range.RowHeight プロパティ (Excel) | Microsoft Learn
- https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.rowheight
下記 URL の「Fixed pitch」の欄に「True」と記載されています。おそらく等倍フォントを示しているのだと思います。
- MS Gothic font family - Typography | Microsoft Learn
- https://learn.microsoft.com/ja-jp/typography/font-list/ms-gothic
「MS Pゴシック」の「Fixed pitch」の欄は「False」になっています。等幅フォントではない、おそらくプロポーショナルフォントのようです。
- MS PGothic font family - Typography | Microsoft Learn
- https://learn.microsoft.com/ja-jp/typography/font-list/ms-pgothic
- VBE のイミディエイトウィンドウに以下の内容が出力されました。
- 私が使用している Excel2003 の標準フォントは「MS Pゴシック」「11」になっているようです。
下記マクロで標準フォントを取得してみました。
Sub 標準フォントのフォント名とフォントサイズを取得()
イミディエイトウィンドウへの出力結果。
Debug.Print Application.StandardFont
Debug.Print Application.StandardFontSize
End Sub
私の環境の標準フォント「MS Pゴシック」の「0」を入力する下記マクロを実行してみます。Sub ゼロ入力()
実行結果は以下のようになりました。
Dim i
For i = 1 To 10
Cells(1, i).NumberFormatLocal = "@" 'セルの書式設定を「文字列」に変更
Cells(1, i).ColumnWidth = i '文字数と同じ列幅に設定
Cells(1, i) = String(i, "0") '同じ文字を繰り返す
Next
End Sub
設定の一例
- 白紙のワークシートでテストしてみます。
- 下記マクロを実行してみます。
Sub 列幅行高設定()
Range("A1").ColumnWidth = 5
Range("A1").RowHeight = 27
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- 次は複数セルの列幅、行高を変更してみます。
Sub 複数セル列幅行高設定()
Range("A1:C3").ColumnWidth = Array(3, 5, 3)
Range("A1:C3").RowHeight = WorksheetFunction.Transpose(Array(27, 54, 27))
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- 行、列単位で列幅、行高を設定してみます。
Sub 列行単位で列幅行高設定()
Columns("A:C").ColumnWidth = 3
Rows("1:3").RowHeight = 27
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
標準の幅と高さに戻す
- 下記の状態でテストしてみます。
- 下記マクロを実行してみます。ワークシートに設定されている標準の列幅と行高を取得してみます。
Sub ワークシートの標準の列幅と行高を取得()
Debug.Print ActiveSheet.StandardWidth
Debug.Print ActiveSheet.StandardHeight
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- 下記マクロを実行してみます。列幅と行高を上記の値に変更してみます。
Sub ワークシートの標準の列幅と行高に戻す()
Columns("A:C").ColumnWidth = ActiveSheet.StandardWidth
Rows("1:3").RowHeight = ActiveSheet.StandardHeight
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- 続けて変更後の列幅と行高を取得するマクロを実行してみます。
Sub 変更後の列幅と行高を取得()
Debug.Print Columns("A:C").ColumnWidth
Debug.Print Rows("1:3").RowHeight
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- ワークシートの標準の列幅、行高と一致しているかどうかをチェックしてみます。下記マクロを実行してみます。
Sub ワークシートの標準の列幅行高と一致してるかどうかを取得()
Debug.Print Columns("A:C").UseStandardWidth
Debug.Print Rows("1:3").UseStandardHeight
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- UseStandardWidth , UseStandardHeight に True を指定して標準の幅、高さに戻してみます。
Sub UseStandardWidth_Heightで標準の幅高さに戻す()
Columns("A:C").UseStandardWidth = True
Rows("1:3").UseStandardHeight = True
End Sub- 実行結果は以下のようになりました。
- 実行結果は以下のようになりました。
- 再度、ワークシートの標準の列幅、行高と一致しているかどうかをチェックしてみます。
Sub 再度ワークシートの標準の列幅行高と一致してるかどうかを取得()
Debug.Print Columns("A:C").UseStandardWidth
Debug.Print Rows("1:3").UseStandardHeight
End Sub- 実行結果は以下のようになりました。
私の知識では False になる原因は分からないままです。
- 実行結果は以下のようになりました。
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。