背景・目的

下図のように、選択中の図形(高さ1cm×幅1cm)のサイズを、マクロで表示させることを考えたい。

【Excel VBA(マクロ)】選択中の図形のサイズを表示する

そのようなマクロは、単体では使いどころがないけれども、意外と応用が効く。

例えば、シート内の複数の図形やグラフのサイズを揃えたり、セルの選択範囲に合わせたサイズのテキストボックスを自動作成したりなどといったマクロのパーツとして使える。

事前検証

図形を選択した状態で、次のコードを実行する。

Sub サイズ表示1()
    
    Dim H, W As Variant
    
    With Selection
        H = .Height     '高さ
        W = .Width     '幅
    End With
    
    MsgBox "高さ" & H & "×幅" & W

End Sub

すると、次のメッセージボックスが表示される。

【Excel VBA(マクロ)】選択中の図形のサイズを表示する

cmでは表示されず、よくわからない数値が出てきてしまう。

これは、「ポイント」という単位で表示されているので、cm(センチ)に変換する必要がある。

1cm=1÷2.54×72ポイントなので、1ポイント=1×2.54÷72cmである。

つまり、上で表示された数値×2.54÷72すれば、cmに換算できる。

方法

以上を踏まえて、以下のコードを書く。

Sub サイズ表示2()
    
    Dim H, W As Variant
    
    With Selection
        H = .Height     '高さ
        W = .Width     '幅
    End With
    
    H = cm変換(H)
    W = cm変換(W)
    
    MsgBox "高さ" & H & "cm×幅" & W & "cm"

End Sub

Function cm変換(ポイント As Variant) As Variant
    
    cm変換 = WorksheetFunction.Round(ポイント * 2.54 / 72, 2)
    
End Function

これを実行すると、下のメッセージが表示され、うまくいったことがわかる。

【Excel VBA(マクロ)】選択中の図形のサイズを表示する

四角形のサイズを適当に変えてみて実行しても、ちゃんと表示されている。

【Excel VBA(マクロ)】選択中の図形のサイズを表示する

投稿時の環境

  • Windows11 Home Ver. 24H2
  • Excel for Microsoft 365 Ver. 2505