目次

目的

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

目次まで戻る

その一例

  1. 白紙のワークシートでテストしてみます。
    白紙のワークシート。
    白紙のワークシート。
  2. 下記マクロを実行してみます。
    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 のようです。

      VBE の用語集 | Microsoft Learn
      https://learn.microsoft.com/ja-jp/office/vba/language/glossary/vbe-glossary#point
      インチとポイント。
      インチとポイント。
  3. 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
  4. 次は 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 セル。
  5. 次は複数セルの 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

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

目次まで戻る

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

前後の投稿