目的
- セルの列幅、行高を取得、設定したい。
- 標準の列幅、行高に戻したい。
その一例
- 白紙のワークシートでテストしてみます。

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



下記マクロで標準フォントを取得してみました。
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
- 実行結果は以下のようになりました。

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
以上、閲覧ありがとうございました。
