目次

目的

  • セルの列幅、行高を取得、設定したい。
  • 標準の列幅、行高に戻したい。

目次まで戻る

取得の一例

  1. 白紙のワークシートでテストしてみます。
    白紙のワークシート。
    白紙のワークシート。
  2. 下記マクロを実行してみます。A1 セルの列幅と行高を取得してみます。
    Sub A1セルの列幅と行高を取得()
    Debug.Print Range("A1").ColumnWidth
    Debug.Print Range("A1").RowHeight
    End Sub
    1. VBE のイミディエイトウィンドウに以下の内容が出力されました。
      8.38(標準フォント 8.38 文字分の幅)。13.5(ポイント)。
      8.38(標準フォント 8.38 文字分の幅)。13.5(ポイント)。

      列幅は、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
      等幅フォントとプロポーショナルフォント。等幅フォントは文字の幅が揃っている。
      等幅フォントとプロポーショナルフォント。等幅フォントは文字の幅が揃っている。
  3. 私が使用している Excel2003 の標準フォントは「MS Pゴシック」「11」になっているようです。
    Excel 起動直後のフォント名とフォントサイズ。
    Excel 起動直後のフォント名とフォントサイズ。
    「ツール > オプション > 全般」の画面。
    「ツール > オプション > 全般」の画面。

    下記マクロで標準フォントを取得してみました。

    Sub 標準フォントのフォント名とフォントサイズを取得()
    Debug.Print Application.StandardFont
    Debug.Print Application.StandardFontSize
    End Sub
    イミディエイトウィンドウへの出力結果。
    Excel の設定と一致しています。
    Excel の設定と一致しています。
    私の環境の標準フォント「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
    実行結果は以下のようになりました。
    1 ~ 5 個の「0」を入力。
    1 ~ 5 個の「0」を入力。
    6 ~ 10 個の「0」を入力。
    6 ~ 10 個の「0」を入力。

目次まで戻る

設定の一例

  1. 白紙のワークシートでテストしてみます。
    白紙のワークシート。
    白紙のワークシート。
  2. 下記マクロを実行してみます。
    Sub 列幅行高設定()
    Range("A1").ColumnWidth = 5
    Range("A1").RowHeight = 27
    End Sub
    1. 実行結果は以下のようになりました。
      列幅、行高が変更されている。
      列幅、行高が変更されている。
  3. 次は複数セルの列幅、行高を変更してみます。
    Sub 複数セル列幅行高設定()
    Range("A1:C3").ColumnWidth = Array(3, 5, 3)
    Range("A1:C3").RowHeight = WorksheetFunction.Transpose(Array(27, 54, 27))
    End Sub
    1. 実行結果は以下のようになりました。
      複数セルの列幅と行高が設定されている。
      複数セルの列幅と行高が設定されている。
  4. 行、列単位で列幅、行高を設定してみます。
    Sub 列行単位で列幅行高設定()
    Columns("A:C").ColumnWidth = 3
    Rows("1:3").RowHeight = 27
    End Sub
    1. 実行結果は以下のようになりました。
      列、行単位で設定出来ました。
      列、行単位で設定出来ました。

目次まで戻る

標準の幅と高さに戻す

  1. 下記の状態でテストしてみます。
    列幅、行高は標準になっていない。
    列幅、行高は標準になっていない。
  2. 下記マクロを実行してみます。ワークシートに設定されている標準の列幅と行高を取得してみます。
    Sub ワークシートの標準の列幅と行高を取得()
    Debug.Print ActiveSheet.StandardWidth
    Debug.Print ActiveSheet.StandardHeight
    End Sub
    1. 実行結果は以下のようになりました。
      8.38 , 13.5。この値に戻せば良さそうです。
      8.38 , 13.5。この値に戻せば良さそうです。
  3. 下記マクロを実行してみます。列幅と行高を上記の値に変更してみます。
    Sub ワークシートの標準の列幅と行高に戻す()
    Columns("A:C").ColumnWidth = ActiveSheet.StandardWidth
    Rows("1:3").RowHeight = ActiveSheet.StandardHeight
    End Sub
    1. 実行結果は以下のようになりました。
      標準の幅、高さに戻っているようです。
      標準の幅、高さに戻っているようです。
  4. 続けて変更後の列幅と行高を取得するマクロを実行してみます。
    Sub 変更後の列幅と行高を取得()
      Debug.Print Columns("A:C").ColumnWidth
    Debug.Print Rows("1:3").RowHeight
    End Sub
    1. 実行結果は以下のようになりました。
      8.38 , 13.5 に戻っている。
      8.38 , 13.5 に戻っている。
  5. ワークシートの標準の列幅、行高と一致しているかどうかをチェックしてみます。下記マクロを実行してみます。
    Sub ワークシートの標準の列幅行高と一致してるかどうかを取得()
      Debug.Print Columns("A:C").UseStandardWidth
      Debug.Print Rows("1:3").UseStandardHeight
    End Sub
    1. 実行結果は以下のようになりました。
      標準の幅、高さになっている場合、 True になるはずですが、なぜか、 False になってしまいました。
      標準の幅、高さになっている場合、 True になるはずですが、なぜか、 False になってしまいました。
  6. UseStandardWidth , UseStandardHeight に True を指定して標準の幅、高さに戻してみます。
    Sub UseStandardWidth_Heightで標準の幅高さに戻す()
    Columns("A:C").UseStandardWidth = True
    Rows("1:3").UseStandardHeight = True
    End Sub
    1. 実行結果は以下のようになりました。
      UseStandardWidth , UseStandardHeight で標準の幅、高さに戻しました。
      UseStandardWidth , UseStandardHeight で標準の幅、高さに戻しました。
  7. 再度、ワークシートの標準の列幅、行高と一致しているかどうかをチェックしてみます。
    Sub 再度ワークシートの標準の列幅行高と一致してるかどうかを取得()
    Debug.Print Columns("A:C").UseStandardWidth
    Debug.Print Rows("1:3").UseStandardHeight
    End Sub
    1. 実行結果は以下のようになりました。
      今度は True になりました。
      今度は True になりました。

      私の知識では False になる原因は分からないままです。

テスト環境

  • Windows 10(64 ビット)
  • Microsoft Office Excel 2003

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿