
動画でExcelマクロ
クラスモジュールは使い方がわかればとても便利な仕組みです。 けれどもなかなかそれを使っている ユーザーはいません。
クラスモジュールを解説している参考書さえあまり見かけません。その理由はクラスモジュールがなくても、なんとかなってしまうからだと思います。それはエクセルの いいところでもあります。
そんなクラスモジュールをなぜ紹介するのかと言えば、Excel のコードが複雑になればなるほど、
クラスモジュールの必要性が高まるからなのです。
(サンプルファイルは、こちらです。 クラスモジュールをつかったカンタンな実用例、サンプル114回)
ワードアートなどを使ったような装飾文字を大量にカンタンに作成するケースを紹介します。
クラスモジュール編1回,2回を見た方を対象にした動画です。
タイトルに使う文字の装飾は楽しいものですが、日常的に行うのであれば、楽しいからと言って時間を書けてはいられません。そこで「テキストボックスを選択してマクロを実行すると、お気に入りのスタイルができる。」というマクロをクラスモジュールを活用して作成します。

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

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

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

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

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

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

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

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

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

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

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

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
Functionの後半では、ユーザーが入力した数値を受け取って、使用するフォントを決定しています。
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
次のFunctionでは、Application.InputBoxを再び利用して、ユーザーにフォントサイズを指定してもらいます。
おすすめサイズは普段自分が使うサイズを記述しておきます。
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
続いてクラスモジュール上に作成した2つのFunctionを利用して、標準モジュールに、装飾したフォントを作成するマクロを記述しました。
Sub biggerEx() がそのマクロです。
その際、標準モジュールのOption Explicit直下に
Dim bigger As New bigfont
とクラスモジュールの宣言をしています。

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

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

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
解説で分かりにくい部分はぜひ動画で確認してください。