【VBAリファレンス|実務向け】[VBAで自動化!「吹き出し」を動的に配置して業務効率をアップさせる方法]

スポンサーリンク

はじめに:手動での吹き出し作成、面倒ではありませんか?

Excelの「吹き出し」機能は、特定のセルやデータに対して注意書きを添えたい時に非常に便利です。しかし、何十行ものデータに対して一つひとつ手動で吹き出しを挿入し、位置を調整するのは骨が折れる作業ですよね。

今回は、業務効率化のプロとして、VBAを使って特定のセルの横に自動で吹き出しを配置するテクニックをご紹介します。

VBAで吹き出しを自動生成するコード

以下のコードは、選択したセルに対して「確認してください」というテキストが入った吹き出しを自動生成するサンプルです。

コード例:
Sub AddCalloutToSelection()
Dim shp As Shape
Dim rng As Range
Set rng = Selection

‘ セルの右側に吹き出しを追加
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangularCallout, _
rng.Offset(0, 1).Left + 10, rng.Top, 150, 50)

‘ 吹き出しのテキスト設定
With shp.TextFrame2.TextRange
.Text = “要確認事項あり”
.Font.Size = 10
End With
End Sub

プロが教える運用のポイント

上記のコードを使う際、いくつか押さえておきたいポイントがあります。

1. 黄色いハンドルの位置調整
吹き出しには「どこを指し示すか」を決める黄色いハンドルがあります。VBAで描画した直後は、吹き出しの先端が指し示す位置(Adjustment)を調整する必要がある場合があります。
shp.Adjustments.Item(1) = 0.5
といったコードを追記することで、吹き出しの角の角度や位置をプログラムから制御可能です。

2. 不要な吹き出しの一括削除
吹き出しを配置するマクロを作ると、修正のたびに「古い吹き出しが残る」という問題が発生しがちです。マクロの冒頭に以下の処理を入れると、スッキリ管理できます。
For Each shp In ActiveSheet.Shapes
If shp.AutoShapeType = msoShapeRoundedRectangularCallout Then shp.Delete
Next shp
これにより、再実行時に古い吹き出しを全て削除してから新しいものを配置できるため、シートが汚れません。

まとめ

吹き出しは単なる装飾ではなく、「誰に何を伝えてほしいか」を明確にするためのインターフェースです。VBAで自動化することで、人的ミスを減らし、より伝わりやすい資料作成が可能になります。

まずは、よく使う定型的な注意書きをボタン一つで挿入できるように設定してみてください。これだけでも、毎日の業務のストレスが大きく軽減されますよ。

タイトルとURLをコピーしました