セルの Width と Height。

執筆者:

カテゴリ:

目的

  • セルの Width と Height で何が取得できるのかを調べる。
  • Top , Left も取得してみる。
  • 取得した値の単位を知りたい。

その一例

  1. 白紙のワークシートでテストしてみます。
白紙のワークシート。
白紙のワークシート。
  • 下記マクロを実行してみます。
    Sub A1セルのWidhtとHeightを取得()
    Debug.Print Range("A1").Width
    Debug.Print Range("A1").Height
    End Sub
    1. VBE のイミディエイトウィンドウに以下の内容が出力されました。
  • 54 , 13.5 。単位はポイントのようです。
    54 , 13.5 。単位はポイントのようです。
    単一セルの Width と Height。
    単一セルの Width と Height。
    Range.Width プロパティ (Excel) | Microsoft Learn
    https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.width
    Range.Height プロパティ (Excel) | Microsoft Learn
    https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.height

    ポイントは 1 インチ(25.4mm)/72 のようです。

    インチとポイント。
    インチとポイント。
  • A1 セルの Top , Left を取得してみます。
    Sub A1セルのTopとLeftを取得()
    Debug.Print Range("A1").Top
    Debug.Print Range("A1").Left
    End Sub
    1. VBE のイミディエイトウィンドウに以下の内容が出力されました。
  • 0 , 0。単位はポイントのようです。 A1 セルの左上角からの距離のようです。
    0 , 0。単位はポイントのようです。 A1 セルの左上角からの距離のようです。
    Top と Left。
    Top と Left。
    Range.Top プロパティ (Excel) | Microsoft Learn
    https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.top
    Range.Left プロパティ (Excel) | Microsoft Learn
    https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.left
  • 次は B2 セルの Width , Height , Top , Left を取得してみます。
    Sub B2セルのWidth_Height_Top_Leftを取得()
    Debug.Print Range("B2").Width
    Debug.Print Range("B2").Height
    Debug.Print Range("B2").Top
    Debug.Print Range("B2").Left
    End Sub
    1. イミディエイトウィンドウの結果です。
  • Top , Left の値に変化がありました。 A1 セルの左上角から、 B2 セルの左上角までの距離が取得されたようです。
    Top , Left の値に変化がありました。 A1 セルの左上角から、 B2 セルの左上角までの距離が取得されたようです。
    左上のセルが A1 ではない場合。例 B2 セル。
    左上のセルが A1 ではない場合。例 B2 セル。
  • 次は複数セルの Width , Height , Top , Left を取得してみます。
    Sub A1からC3のWidth_Height_Top_Leftを取得()
    Debug.Print Range("A1:C3").Width
    Debug.Print Range("A1:C3").Height
    Debug.Print Range("A1:C3").Top
    Debug.Print Range("A1:C3").Left
    End Sub
    1. イミディエイトウィンドウの結果です。
  • 54×3=162 , 13.5×3=40.5 になっている。
    54×3=162 , 13.5×3=40.5 になっている。
    複数セルの場合のTop , Left , Width , Height。
    複数セルの場合のTop , Left , Width , Height。

    マクロストック

    オートシェイプはポイント単位で配置できるので、オートシェイプを挿入して、セルのポイントとの一致をチェックしてみました。

    Sub 全シェイプ削除()
    ActiveSheet.Shapes.SelectAll
    Selection.Delete
    End Sub

    Sub 拡大表示(倍率)
    ActiveWindow.Zoom = 倍率
    End Sub

    Sub 四角形挿入(左, 上, 幅, 高さ)
    Dim a As Shape
    Set a = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 左, 上, 幅, 高さ)
    a.Line.Visible = msoFalse '線なし
    a.Fill.ForeColor.SchemeColor = 5 '黄色で塗りつぶし
    End Sub

    Sub 全シェイプ選択()
    ActiveSheet.Shapes.SelectAll
    End Sub

    Sub セルの位置をチェック()
    Call 全シェイプ削除
    Call 拡大表示(200)
    Call 四角形挿入(0, 0, 54, 13.5)
    Call 四角形挿入(54, 13.5, 54, 13.5)
    Call 四角形挿入(54, 13.5 * 3, 54 * 2, 13.5 * 2)
    Call 全シェイプ選択
    End Sub

    上記「セルの位置をチェック()」の実行結果です。

    セルのポイントと一致している。
    セルのポイントと一致している。

    テスト環境

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

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