【VBA】セルデータを参照した吹き出しボックスを作成する方法!

f:id:yshgs_elec:20201229214336j:plain

「VBAでデータ整理ついでに資料作成までやりたい。」

「セルデータを参照した吹き出しを作りたいんだけど、どうやればいいんだろう。」

 

この記事ではこんな悩みを解決します。

吹き出しを自動作成するという作業イメージ図

 

普段のエクセル作業なら上の画像のように

①挿入②図③図形④吹き出しを選択し、

さらに出てきた吹き出しに対して

⑤文字入力⑥吹き出しボックスの装飾

という面倒な作業を行っている人は多いのではないでしょうか?

 

この作業は意外と時間がかかりますので、自動化できたら非常に便利ですよね。

資料作成の際に吹き出しを多用している人はぜひ最後までご覧ください。

 

それでは早速やっていきます!

スポンサーリンク

作業内容の確認

いきなりVBAコードを紹介してもどんな作業が行われているのかイメージしにくいと思いますので、今回は以下のような吹き出しボックスを作成していこうと思います。

セルデータを参照して吹き出しを自動作成するという作業イメージ図

具体的には、

⓪ある位置に吹き出しボックスを挿入

①セルに記入してるデータを吹き出しに出力

②太文字に変更

③文字サイズ変更(今回はフォントサイズ=20に)

④文字の色変更(今回は赤に)

⑤吹き出しボックスの大きさ自動調整

⑥外枠の色設定(今回は黒に)

⑦背景色の設定(今回は白に)

⑧吹き出しの三角の位置の調整

という流れでVBAコードを記述していきます。

 

あなたにとって不必要なところは削除していただいても問題ありませんので、必要に応じてご利用ください。

 

それではこの作業を自動で実施できるVBAコードをご紹介していきます。

スポンサーリンク

吹き出しボックスを作成するVBAコード

以下が先ほど紹介した作業を実施してくれるVBAコードです。

先ほどの述べたとおり、あなたにとって必要なところを適宜変更、修正していただければと思います。

 

◆吹き出しボックスを作成するVBAコード

Sub make_fukidashi()
    Dim text_contents As String
    text_contents = Range("A1")
    ActiveSheet.Shapes.AddShape(msoShapeRectangularCallout, 50, 50, 10, 10).Select
    With Selection
        'テキスト入力
        .Text = text_contents
        '太文字に変更
        .Font.Bold = True
        '文字サイズ変更
        .Font.Size = 15
        '文字の色変更
        .Font.Color = RGB(255, 0, 0)
        'テキストボックスの大きさ調整(自動)
        .AutoSize = True
        '外枠の色変更
        .ShapeRange.Line.Visible = msoTrue
        .ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)
        '背景色の変更
        .ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
        '吹き出しの位置調整
        '吹き出しからの右方向距離
        .ShapeRange.Adjustments.Item(1) = -0.3
        '吹き出しからの下方向距離
        .ShapeRange.Adjustments.Item(2) = -1.4
    End With
End Sub

 

以下が上のVBAコードを実行した結果です。

サンプルコードを実行した結果

少し三角の先端位置がずれていますね。

 

三角の先端位置の調整方法についても触れておきましょう。

先ほどのVBAコード上では三角の先端位置は

.ShapeRange.Adjustments.Item(1) = ***
.ShapeRange.Adjustments.Item(2) = ****

という二文によって設定されていました。

 

この二文の意味ですが、

.ShapeRange.Adjustments.Item(1)は、吹き出し先端の左右位置を示しています。

ここで1と設定すれば吹き出しボックスの中心から、吹き出しボックスと同じ幅分だけ右にずれた場所に三角の先端が配置されます。

-1とすれば逆に左にずれます。

 

今回は吹き出しの中心からちょうど吹き出しの横幅分くらい左に出したいので-1に変更してみましょう。

 

.ShapeRange.Adjustments.Item(2)は、吹き出し先端の上下位置を示しています。

高さに関しても同じような考え方で、1とすれば吹き出しボックスの高さ分下にずれますし、-1とすれば上にずれます。

 

今回の例では高さは特に問題なさそうなので、そのままの-1.4としておきましょう。

 

というわけで

.ShapeRange.Adjustments.Item(1) = -1.0
.ShapeRange.Adjustments.Item(2) = -1.4

として再実行してみた結果は以下の通りです。

吹き出しの先端を微調整した結果

ちょっと行き過ぎ感はありますが、まぁいいでしょう。

 

こんな感じで吹き出しの先端位置を調整できますので、あなたの状況に応じで適宜変更されると良いと思います。

なお、今回は吹き出しボックスに入力する文章は、セルを参照する形にしていますが、ここはもちろん直接書きたい文章を記入してもOKです。

 

その際は

text_contents = “書きたい文章”

というように変更すればOKです。

 

また吹き出しボックスを挿入する位置や大きさに関しては【ActiveSheet.Shapes.AddLabel(~~~)】の中の数字を調整することで変更できますので、ここも適宜変更してみてください。

⇒先ほどのコードでは50,50,10,10となっていたところですね。

 

◆吹き出しボックスの位置&サイズの変更について

1番目の数字:吹き出しボックスの左からの位置

2番目の数字:吹き出しボックスの上からの位置

3番目の数字:吹き出しボックスの幅

4番目の数字:吹き出しボックスの高さ

※幅や高さを変更したいときは.AutoSize=Trueのところを消しておきましょう。

 

スポンサーリンク

おわりに

というわけで今回は、吹き出しボックスの作成から装飾までをVBAで自動化する方法についてご紹介しました。

 

この記事の内容をコピーしておくだけで、面倒な資料作成作業を削減できると思いますのでぜひご活用ください。

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

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