クラスモジュールの作り方
動画でExcel クラスモジュールの作り方
クラスモジュールの作り方
動画版「マクロ講座中級109回クラスモジュールの作り方」です。
皆さんは表のタイトルなどを作成するときに、
普通にセルに文字を入力していますか、
それともワードアートで文字を挿入していますか?
私はワードアートを使っています。ワードアートってある程度、文字が大きいんですよね。
そこで文字仕様変更したり、文字のサイズと色を変更したりするほうが、
テキストボックスから作成するより楽なんですね。
テキストボックスだと、この Excel の標準フォントで入ってしまうのでフォントサイズが小さい。
見出し作成に使えるオブジェクトをクラスモジュールで作ってきたいと思います。
(サンプルファイルは、こちらです。 クラスモジュールの作り方、サンプル109回)
マクロ動画 クラスモジュールの作り方
クラスモジュールをつくる
-
では今回の素材なんですけれども、ワードアートを挿入します。 文字を入力します。クラクラするクラスと入力しました。
-
Visual Basic Editor を開きます。そして新しいクラスを挿入しましょう。 プロジェクトエクスプローラーのプロジェクトを右クリックして挿入。 そしてクラスモジュールを選択します。 あるいはツールバーの挿入ボタンから、挿入、クラスモジュールと選択しても挿入できます。
-
クラスモジュールの名称を変更しましょう。 今回はBigfontという名前にすることにします。
-
今回紹介するクラスモジュールのサンプルは、 私が日頃よく使っているマクロを使って、クラスモジュールの作り方を紹介しています。
今までは通常のマクロとして使っていたものをクラス化することで、 クラスモジュールの使い方を説明していきたいと思っています。 -
インスタンス化とは
クラスモジュールは部品をいれておく場所のようなものです。
いくら部品をたくさん作ったとしてもそのままでは使えません部品ですから。
インスタンス化とは、部品箱にある部品を製品に組み込むということで実体を与えるという意味になります。上記のコードをクラスモジュールに記述します。これでメソッドができました。
クラスモジュールは部品をいれておく場所なので、 これではまだ動きません。標準モジュールに戻って、インスタンス化しましょう。
下のコードは2行で書く場合です。Sub bigger01() Dim bigger As bigfont Set bigger = New bigfont bigger.futoji End Sub
1行でインスタンス化を書く場合 As の後ろにNewと書く。
Sub bigger02() Dim bigger As New bigfont bigger.futoji80 End Sub
クラスで作成したマクロを実行
-
マクロ bigger01を実行すると、このようになります。
-
フォントのサイズが60になりました。今度はこのマクロをリメイクしてフォントのサイズ80と100を作りましょう。
-
クラスモジュール内に部品として書いた太字というマクロをコピーして、サイズの部分だけを変更します80と100です。
.Size = 60 を .Size = 80 にしてやります。 -
オブジェクトブラウザを見てもらうと、ビッグフォントのメンバーとして、太字80と太字100が追加されているのを確認することができます。
-
少しでもコードが見やすくなるように、コードのスリム化をしていきましょう。
インスタンス化を1行で書きます。そして宣言セクションに書いてしまえば、 他のプロシージャ部分では書かなくて済みます。
コードのスリム化、簡潔化
-
そしてクラスモジュールのメンバーメソッドを見てもらうと、フォント名を3回繰り返して記述していますね。 これをすっきりさせたいです。
それには、フォント名を定数としてしまう方法があります。 -
クラスモジュールを使うとこのように簡単に部品を増やすことができますので、マクロの種類も増やすことができます。
inputbox を表示してユーザーにフォントのサイズを入力してもらったり、フォントの種類を選んでもらったりといったことも、簡単にできるようになりますね。