クラスモジュールを使って装飾文字を量産

マクロ講座 動画編 114回
マクロ講座

動画でExcelマクロ

クラスモジュールをつかったカンタンな実用例

クラスモジュールは使い方がわかればとても便利な仕組みです。 けれどもなかなかそれを使っている ユーザーはいません。
クラスモジュールを解説している参考書さえあまり見かけません。その理由はクラスモジュールがなくても、なんとかなってしまうからだと思います。それはエクセルの いいところでもあります。
そんなクラスモジュールをなぜ紹介するのかと言えば、Excel のコードが複雑になればなるほど、 クラスモジュールの必要性が高まるからなのです。
(サンプルファイルは、こちらです。 クラスモジュールをつかったカンタンな実用例、サンプル114回

マクロ動画 クラスモジュールをつかったカンタンな実用例

ワードアートなどを使ったような装飾文字を大量にカンタンに作成するケースを紹介します。
クラスモジュール編1回,2回を見た方を対象にした動画です。

クラスモジュールにお気に入りの文字設定を作って活用する

  1. タイトルに使う文字の装飾は楽しいものですが、日常的に行うのであれば、楽しいからと言って時間を書けてはいられません。そこで「テキストボックスを選択してマクロを実行すると、お気に入りのスタイルができる。」というマクロをクラスモジュールを活用して作成します。

    NAMAE1
  2. 初めに、前回のマクロでは、テキストボックスを選択してマクロを実行すると

    NAMAE2
  3. 文字のサイズがお気に入りのフォントの指定サイズになりました。

    NAMAE3
  4. 今回はそれを発展させて、フォントの選択とフォントサイズの決定をマクロに入れることにします。

    NAMAE4
  5. 複数の選択肢を用意して、選択はユーザーがImputBoxにて行うことにします。

    NAMAE5

Class Module を利用したマクロのながれ

  1. これから紹介するマクロはテキストボックスに文字列を入力し選択した状態で実行します。

    NAMAE6
  2. 実行ボタンを押すと、最初にフォント選択ダイアログが表示されます。

    NAMAE7
  3. 次にフォントのサイズを聞いてくるので、フォントサイズを入力します。

    NAMAE8
  4. 最後に色の設定ダイアログが現れて、色を選択できるようになっています。

    NAMAE9
  5. 以上でユーザー好みのフォントとサイズと色のタイトルが出来上がります。

    NAMAE10

装飾タイトルをカンタンに作成するマクロコード

  1. VBEを開き、前回作成したクラスモジュールのbigfontに以下のコードを記述します。
    ここには「Const fname1 As String = "富士ポップ"」のように使いたいフォントの種類を定数を使って記述しています。

    NAMAE11
  2.      Option Explicit
         Const fname1 As String = "富士ポップ"
         Const fname2 As String = "小塚ゴシック Pro H"
         Const fname3 As String = "HGPゴシックE"
         Const fname4 As String = "江戸勘亭流P"
    
  3. 次に、そのConstを利用してクラスモジュールにFunctionを作成しています。Application.InputBoxでユーザーに使用するフォントを選んでもらいます。

    NAMAE12
  4.      Function orderfont()
         Dim fontnumber As Long, determined As String
         fontnumber = Application.InputBox(Prompt:="フォント種類を選ぶ" _
                                & vbCrLf & "1 富士ポップ" & vbCrLf & "2 小塚ゴシック" _
                                & vbCrLf & "3 HGPゴシックE" & vbCrLf & "4 江戸勘亭流P", _
                                Title:="font select", Default:=1, Type:=1)
         If fontnumber = False Then
            Exit Function
    
  5. Functionの後半では、ユーザーが入力した数値を受け取って、使用するフォントを決定しています。

  6.    ElseIf fontnumber = 1 Then
         determined = fname1
       ElseIf fontnumber = 2 Then
         determined = fname2
       ElseIf fontnumber = 3 Then
         determined = fname3
       ElseIf fontnumber = 4 Then
         determined = fname4
      End If
     orderfont = determined
     End Function
    
  7. 次のFunctionでは、Application.InputBoxを再び利用して、ユーザーにフォントサイズを指定してもらいます。
    おすすめサイズは普段自分が使うサイズを記述しておきます。

  8.      Function fsize()
         Dim fontsize As Long
           fontsize = Application.InputBox(Prompt:="fontのサイズを数値で入力してください" _
                             & vbCrLf & "おすすめサイズ60、70、80", _
                             Title:="おすすめサイズ60、70、80", Default:=60, Type:=1)
           If fontsize = False Then
          '   MsgBox "キャンセルします"
             Exit Function
             End If
         fsize = fontsize
         End Function
         
    
  9. 続いてクラスモジュール上に作成した2つのFunctionを利用して、標準モジュールに、装飾したフォントを作成するマクロを記述しました。
    Sub biggerEx() がそのマクロです。
    その際、標準モジュールのOption Explicit直下に
    Dim bigger As New bigfont
    とクラスモジュールの宣言をしています。

    NAMAE15
  10. 変数にクラスモジュールのファンクションで得たfontsizeとdeterminedを使うように設定しています。マクロの実行時に表示されるImputBoxで、サイズを入力するBoxがこれです。

    NAMAE16
  11. 最後に文字色を設定するために、別途作成した、GetCollor 関数を呼び出しています。マクロの実行時に表示される色の設定ダイアログがこれです。

    NAMAE17
  12. Sub GetColor()
    Dim 長さ As Long, 色取得 As Long
         長さ = Len(Selection.ShapeRange(1).TextFrame2.TextRange.Text)
    Application.Dialogs(xlDialogEditColor).Show (1)   'ColorIndexの1番の色を変更する
    色取得 = ActiveWorkbook.Colors(1)   '変更した色を取得
    
         With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 長さ).Font.Fill
              .Visible = msoTrue
              .ForeColor.RGB = 色取得
    '        .Transparency = 0.4
              .Solid
         End With
    End Sub
  13. 解説で分かりにくい部分はぜひ動画で確認してください。