連載
» 2014年08月19日 18時00分 UPDATE

VBA/マクロ便利Tips:目立つプレゼン資料作成に役立つ! オートシェイプにぼかしや影を付け、面取りや文字挿入 (1/2)

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、影を付けるShadow、ぼかしを付けるSoftEdge、面取りを設定するThreeD.BevelTopType、文字を挿入するTextFrame2オブジェクトの使い方などを解説。

[薬師寺国安,PROJECT KySS]
「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprise(64ビット)+Excel 2013


目立つプレゼン資料作成に使える4つのテクニック

 Tips「Excelでオートシェイプを表示、削除、画像を挿入する」では、VBA/マクロでのオートシェイプの基本的な使い方を紹介したが、今回はさらに詳しくオートシェイプの使い方のTipsを紹介する。

 紹介するTipsは以下の4つだ。

 今回のTipsも、どれも直接実務には役に立たないTipsのように思われるかもしれないが、今回はプレゼンテーション用の資料を作成する場合に利用できるのではないかと思うので、ぜひ活用してほしい。

オートシェイプに影を設定するShadow.Typeプロパティ

 初めは、「オートシェイプに影を設定する」について解説しよう。ShapesオブジェクトのShadow.Typeプロパティを活用する。

オートシェイプに影を設定するShapes.Shadow.Typeプロパティの書式

Shapes.Shadow.Type={表1の値}


 ShadowオブジェクトのTypeプロパティに表1の値を指定する。

表1 影の種類
名前
msoShadow1 1
msoShadow2 2
msoShadow3 3
msoShadow4 4
msoShadow5 5
msoShadow6 6
msoShadow7 7
msoShadow8 8
msoShadow9 9
msoShadow10 10
msoShadow11 11
msoShadow12 12
msoShadow13 13
msoShadow14 14
msoShadow15 15
msoShadow16 16
msoShadow17 17
msoShadow18 18
msoShadow19 19
msoShadow20 20
msoShadow21 21
msoShadow22 22
msoShadow23 23
msoShadow24 24
msoShadow25 25
msoShadow26 26
msoShadow27 27
msoShadow28 28
msoShadow29 29
msoShadow30 30
msoShadow31 31
msoShadow32 32
msoShadow33 33
msoShadow34 34
msoShadow35 35
msoShadow36 36
msoShadow37 37
msoShadow38 38
msoShadow39 39
msoShadow40 40
msoShadow41 41
msoShadow42 42
msoShadow43 43
参考:MsoShadowType enumeration(Microsoft.Office.Core)- MSDN

「参考」を見ると分かるが、各影の種類の「概要」には、「1番目の影のタイプ」〜「43番目の影のタイプ」としか記述されてなく、記載しても意味がないので、ここでは省略した。どのような表現になるのか、各自下記マクロを実行して試して確認してほしい。また「値」は上から順番に「1」〜「43」となるようだ。

 ここからは、Shadow.Typeプロパティを使うための準備について説明する。サンプルマクロを実行するに当たり、図1のようになっているとしよう。

ExcelVBAOther2_01.png 図1 「コンボボックス」を配置し、「コントロールの書式設定」を完了した

 まず、Excelメニューの[開発]→[挿入]と選択して「コンボボックス」を配置する。次に表1の「名前」をコピーして「O1:O43」に表示させる。表1の「名前」の最初の値(ここでは「msoShadow1」)にカーソルを合わせて、[Ctl]キーを押しながら下方向にマウスをドラッグすると一気に選択できるので、それをコピー&ペーストすれば簡単だ。

 配置した「コンボボックス」を選択して、マウスの右クリックで表示されるメニューから、[コントロールの書式設定]を選択する。表示される画面から、[入力範囲]に、表1の「名前」を入力した「O1:O43」までを指定する。

 次に[リンクするセル]に、「N2」を指定しておく。ここには、「コンボボックス」から選択されたインデックス番号が表示される。各「影」の「値」は、上から順番に「1」〜「43」になっているので、特に「値」を入力しておく必要はない。セル「N2」に表示されるインデックス番号がそれに該当することになる。

 ここからは、実際にマクロを記述してみよう。まず、VBE(Visual Basic Editor)のメニューから、[挿入]→[標準モジュール]と選択する。プロジェクトにModule1が追加されるので、Module1をダブルクリックして、表示されるエディター画面内にリスト1のマクロを記述する。

Option Explicit
Sub オートシェイプの影を表示()
  Call オートシェイプの削除
  With Range("B2:G18")
    ActiveSheet.Shapes.AddShape msoShapeHeart, .Left, .Top, .Width, .Height
    ActiveSheet.Shapes(2).Shadow.Type = Range("N2").Value
  End With
End Sub
リスト1 オートシェイプの影を表示するマクロ

 3行目では、オートシェイプを削除する「オートシェイプの削除」プロシージャを呼び込む(Tips「Excelでオートシェイプを表示、削除、画像を挿入する」で紹介)。

 4〜5行目で「B2:G18」の範囲に、「ハート型」のオートシェイプを指定し、「B2:G18」のLeft、Top、Width、Heightの位置に表示する。

 6行目では、アクティブシートに表示されている、インデックスが「2」のShapeオブジェクトのShadow.Typeプロパティに、セル「N2」の値を指定する。アクティブシートに表示されているインデックスが「1」のShapeオブジェクトは、「コンボボックス」が該当する。

 「コンボボックス」を選択して、マウスの右クリックで表示されるメニューから、「マクロの登録」を選択し、リスト1のマクロを関連付け実行すると、図2のように「コンボボックス」から選択された「オートシェイプ」が、セル「B2:G18」の範囲に表示され、影はその範囲からは、はみ出して表示される。

ExcelVBAOther2_02.png 図2 「コンボボックス」から選択した「オートシェイプの影」が表示された

 「コンボボックス」から「オートシェイプの影」を選択するたびに、該当する「影」が表示されるので、いろいろ試してみてほしい。

オートシェイプをぼかすSoftEdge.Typeプロパティ

 次に、「オートシェイプをぼかす」について解説しよう。「オートシェイプをぼかす」という新しいシートを作成して試してほしい。ここでは、ShapesオブジェクトのSoftEdge.Typeプロパティを活用する。

オートシェイプをぼかすSoftEdge.Typeプロパティの書式

Shapes.SoftEdge.Type={表2の値}


 SoftEdgeオブジェクトのTypeプロパティには、表2の「ぼかし」の種類を指定する。

表2 ぼかしの種類
定数 説明
SoftEdgeTypeMixed -2 ミックスされたぼかし
msoSoftEdgeTypeNone 0 ぼかしなし
msoSoftEdgeType1 1 ぼかし1
msoSoftEdgeType2 2 ぼかし2
msoSoftEdgeType3 3 ぼかし3
msoSoftEdgeType4 4 ぼかし4
msoSoftEdgeType5 5 ぼかし5
msoSoftEdgeType6 6 ぼかし6
参考:MsoSoftEdgeType Enumeration(Office)- MSDN

 ここからは、SoftEdge.Typeプロパティを使うための準備について説明する。サンプルマクロを実行するに当たり、図3のようになっているとしよう。

ExcelVBAOther2_03.png 図3 「コンボボックス」を配置し、「コントロールの書式設定」を設定する

 追加した「オートシェイプをぼかす」シート内に、「オートシェイプに影を設定するShadow.Typeプロパティ」と同じ方法で「コンボボックス」を配置する。[コントロールの書式設定]から、[入力範囲]にセル「P1:P8」を指定し、[リンクするセル]に「O2」を指定しておく。「値」には、表2の「値」を元に、「Q1:Q8」に入力しておく。

 先ほど追加したModule1内に、リスト3の「オートシェイプをぼかす」マクロを記述する。

Sub オートシェイプをぼかす()
  Dim ぼかし As Integer
  ぼかし = Cells(Range("O2").Value, 17)
  Call オートシェイプの削除
  With Range("B2:G18")
    ActiveSheet.Shapes.AddShape msoShapeHeart, .Left, .Top, .Width, .Height
    ActiveSheet.Shapes(2).SoftEdge.Type = ぼかし
  End With
End Sub
リスト3 オートシェイプをぼかすマクロ

 まず、2行目でInteger型の変数「ぼかし」を宣言する。次に3行目で、変数「ぼかし」に、「Cells(行番号,列番号)」の書式で記述する。「行番号」には、「ぼかし」の種類として「コンボボックス」から選択したインデックス番号の表示されているセル「O2」の値を指定。「列番号」には、「Q列」である「17」の列番号を指定して、取得された「値」を格納している。

 「ハート型」のオートシェイプを表示する方法は、リスト1と同じなので省略する。

 7行目で、アクティブシートのShapeオブジェクトのインデックスが「2」である、オートシェイプのSoftEdge.Typeプロパティに、変数「ぼかし」の値を指定する。アクティブシートのShapeオブジェクトのインデックス「1」には、「コンボボックス」が該当することになる。

 「オートシェイプをぼかす」シート内の、「コンボボックス」にリスト3のマクロを関連付け実行すると、図4のようにハート型のオートシェイプが、選択された「ぼかし」タイプで表示される。

ExcelVBAOther2_04.png 図4 ハート型のオートシェイプが、選択された「ぼかし」タイプで表示される

 表2を見て分かる通り、「説明」を見ただけでは、どのような「ぼかし」になるのか全く予測がつかない。「参考URL」を見ても同じだ。しかし、今回紹介した方法を使用すれば、どのタイプがどんな「ぼかし」になるか、一目瞭然で理解しやすいと思う。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。