検索
連載

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

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

Share
Tweet
LINE
Hatena
前のページへ |       

オートシェイプに面取りを設定するThreeD.BevelTopTypeプロパティ

 続いて、「オートシェイプに面取りを設定する」について解説する。

 Shapeに3D効果を与えるには、ThreeDオブジェクトを使用して、ThreeDFormatオブジェクトを取得し、各種プロパティの設定を行う。ThreeDFormatオブジェクトとは、図形の3Dの書式設定を表すオブジェクトだ。

オートシェイプに面取りを設定するThreeD.BevelTopTypeプロパティの書式

Shapes.ThreeD.BevelTopType={表3の値}


 ThreeDオブジェクトのBevelTopTypeプロパティに、表1の「面取り」を表す定数を指定する。

表3 面取りの定数
定数 説明
msoBevelNone 1 面取りなし
msoBevelRelaxedInset 2 額縁風面取り
msoBevelCircle 3 円形面取り
msoBevelSlope 4 スロープ面取り
msoBevelCross 5 クロス面取り
msoBevelAngle 6 角度面取り
msoBevelSoftRound 7 ソフトラウンド面取り
msoBevelConvex 8 浮き上がり面取り
msoBevelCoolSlant 9 クールスラント面取り
msoBevelDivot 10 切り込み面取り
msoBevelRiblet 11 スケール面取り
msoBevelHardEdge 12 ハードエッジ面取り
msoBevelArtDeco 13 アールデコ面取り
参考:MsoBevelType Enumeration(Office)- MSDN

 表3の順番は、「参考」ページの値「1」〜「13」までを順番に並べている。こうしておいた方が、「コンボボックス」から選択した「面取りタイプ」のインデックス番号と一致するので都合がいいし、わざわざ「値を」セルに入力しておく必要もないためだ。

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


図5 「コンボボックス」を配置し、[コントロールの書式設定]を完了した

 ここでも、「オートシェイプに影を設定するShadow.Typeプロパティ」と同じ方法で「コンボボックス」を配置する。

 次に表3の「名前」を、「O1:O13」に表示させる。配置した「コンボボックス」を選択して、マウスの右クリックで表示されるメニューから、[コントロールの書式設定]を選択する。表示される画面から、[入力範囲]に表3の名前を入力した「O1:O13」までを指定する。次に[リンクするセル]に、「N2」を指定しておく。ここには、「コンボボックス」から選択されたインデックス番号が表示される。

 これまでと同様、Module1内にリスト3の「面取りを表示する」マクロを記述する。

Option Explicit
Sub 面取りの設定()
  Dim 面取り As Integer
  面取り = Range("N2").Value
  Call オートシェイプの削除
  With Range("B2:G18")
   ActiveSheet.Shapes.AddShape msoShapeExplosion1, .Left, .Top, .Width, .Height
  End With
 
  With ActiveSheet.Shapes(2).ThreeD
    .BevelTopType = 面取り
    .BevelTopInset = 10
    .BevelTopDepth = 10
  End With
End Sub
リスト3 面取りを表示するマクロ

 3〜4行目では、変数「面取り」に、セル「N2」に表示される、「コンボボックス」から選択されたインデックスの値を格納する。

 5〜8行目もこれまでと同様だが、範囲は「B2:G18」となり、「爆発型」のオートシェイプを指定している。

 10〜14行目では、アクティブシートに表示されている、インデックスが「2」のShapeオブジェクトのThreeDオブジェクトに各プロパティを設定している。アクティブシートに表示されている、インデックスが「1」のShapeオブジェクトは、「コンボボックス」が該当する。

 11行目のBevelTopTypeには、変数「面取り」に格納されている値を指定する。

 ThreeDFormatオブジェクトに対して、「上の挿入面取り」を上げるかどうかを示すBevelTopInset プロパティには「10」を指定する(12行目)。

 TThreeDFormatオブジェクト上で面取りを使用する場合に、「上の奥行き」を設定するBevelTopDepthプロパティにも「10」を設定する(13行目)。

 「コンボボックス」を選択して、マウスの右クリックで表示されるメニューから「マクロの登録」を選択し、リスト3のマクロを関連付け実行すると、図6のように、「コンボボックス」から選択された「面取り」が、「B2:G18」の範囲に表示された「爆発型」オートシェイプに反映された。


図6 「コンボボックス」から選択した、「面取り」の適用されたオートシェイプが表示された

 「コンボボックス」から「面取り」の種類を選択するたびに、オートシェイプに選択した「面取り」が適用されて表示される。

オートシェイプに文字を挿入するTextFrame2オブジェクト

 最後に、「オートシェイプに文字を挿入する」について解説する。

 オートシェイプに文字列を表示させるには、TextFrame2オブジェクトを使用し、Textプロパティで文字列を指定する。

オートシェイプに文字を挿入するTextFrame2オブジェクトの書式

ActiveSheet.Shapes({インデックス番号}).TextFrame2.TextRange.Characters.Text="{文字列}"


 {インデックス番号}にはアクティブシート上に表示されている、図形のインデックス番号を指定する。

 TextFrame2オブジェクトは、Shape、ShapeRange、またはChartFormatオブジェクトのレイアウト枠を表すものだ。なお、ShapeRangeは文書の図形セットである図形の範囲を表すオブジェクトで、ChartFormatはグラフ要素のOffice Art書式へのアクセスを提供するオブジェクトだ。

 ここからは、TextFrame2オブジェクトを使うための準備について説明する。サンプルマクロを実行するに当たり、図7のようになっているとしよう。


図7 「表示する文字」を入力するセルと、「実行」ボタンを配置した

 「表示する文字」を入力するセルと、「文字サイズ」を入力するセル、それに「角丸四角形」で作成した「実行」ボタンを配置している。

 Module1内に、「オートシェイプに文字を挿入する」マクロを記述する(リスト4)。

Sub オートシェイプに文字を挿入()
  Call オートシェイプの削除
  With Range("B2:G18")
   ActiveSheet.Shapes.AddShape msoShapeHeart, .Left, .Top, .Width, .Height
  End With
  
  If Range("I2").Value = "" Or IsNumeric(Range("I3").Value) = False Then
    MsgBox "値が不正です。"
    Exit Sub
  Else
    With ActiveSheet.Shapes(2).TextFrame2
     .TextRange.Characters.Text = Range("I2").Value
     .TextRange.Font.Size = Range("I3").Value
    End With
  End If
End Sub
リスト4 「オートシェイプに文字を挿入する」マクロ

 2〜5行目については、リスト1・2と同様なので、省略する。

 7行目では、文字を入力するセルに文字が未入力の場合、かつ、「文字サイズ」を入力するセルに数値以外が入力されたかどうか判定している。偽の場合は、警告メッセージを表示して処理を抜ける。

 11〜14行目では、アクティブシートのShapeオブジェクトのインデックスが「2」であるオートシェイプのTextFrame2オブジェクトに、各プ ロパティを設定している。アクティブシートのShapeオブジェクトのインデックス「1」には、「コンボボックス」が該当することになる。

 12行目で、TextRange.Characters.Textにセル「I2」の値を指定し、13行目では、文字のサイズにTextRange.Font.Sizプロパティにセル「I3」の値を指定している。

 「オートシェイプに文字を挿入する」シート内の「実行」ボタンに、リスト4のマクロを関連付け実行すると、図8のように、ハート型のオートシェイプ内に、指定した文字が指定したサイズで表示される。


図8 ハート型のオートシェイプ内に文字が表示された

初心者がプログミラミングを楽しんで学べる

 今回は「オートシェイプに影を設定する」「オートシェイプをぼかす」「オートシェイプに面取りを設定する」「オートシェイプに文字を挿入する」の4つのTipsを紹介したが、いかがだっただろうか。

 今回のTipsも、Tips「Excelでオートシェイプを表示、削除、画像を挿入する」同様、Excel上でオートシェイプを活用したが、PowerPointやWordでも使えるはずなので、ぜひ各自カスタマイズして利用してほしい。

 また、VBA(Visual Basic for Applications)を使うと、その名の通り、ビジュアルを使ったプログラミングが手軽にできる。オートシェイプを使ったプログミラングは、まさにビジュアルに訴えるもので、楽しみながらプログミラミングを学ぶことができるので、初心者の学習用教材としても利用できるのではないだろうか。

著者プロフィール

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る