(7)コマンドボタン

使用する人が何かの処理を実行させたい時にこのコマンドボタンを使います。ボタンをクリックした時に呼び出されるイベントハンドラの中で、セルに書き込んだり、読み込んだりの処理を書きます。 ボタンの設定方法は「フォームを設定する例題」で説明しましたので、省略します。

(8)イメージ

画像を表示するのに使用します。ここで、サイズの変更や拡大/縮小はできますが、画像内容の編集はできません。サポートされているフォーマットは、*.bmp・*.cur・*.gif・*.ico・*.jpg・*.wmfです

プロパティのPictureの所に表示したい画像のファイル名を設定します。

図18:イメージの設定

(7)のボタンと組み合わせて、二つの画像を交互に表示してみましょう。

図19:イメージの例題

図18の画面にボタンを貼り付けます。ボタンをダブルクリックして、ボタンのClickイベントハンドラを表示させます。Clickイベントハンドラの中にVBAを書きます。

[リスト4]CommandButton1_Click(イメージの例題.xlsm)

Private Sub CommandButton1_Click()
   If f = 0 Then
       Image1.Picture = LoadPicture("画像のあるパス\やぎ先生07-200.bmp")
       f = 1
   Else
       Image1.Picture = LoadPicture("画像のあるパス\やぎ先生06-200.bmp")
       f = 0
   End If
End Sub

ボタンを押すたびに画像を変えるため変数fを作り「=0」の時一つ目の画像、「=1」の時二つ目の画像を表示します。LoadPicture関数で画像を読み込んでいます。今回画像の背景が白なので、フォームの背景も白にしています。

この処理を開始する一番初めに変数fの設定が必要です。この設定を「初期設定」と言います。以下が初期設定のVBAです。

[リスト5]UserForm_Initialize(イメージの例題.xlsm)

Dim f          '(1)
Private Sub UserForm_Initialize()
  f = 0
End Sub

変数fはボタンが押されて、Clickイベントハンドラの処理を行い、Clickイベントハンドラを抜けて、次にボタンを押された時でも値が設定されたままでないといけないので、イベントハンドラの外に書きます。SubからEnd Subまでの処理をプロシージャ(ひと固まりの機能を持った部品)と言います。プロシージャの外に変数設定を書くと、フォームの全体で使用できるようになります。

次に、コードブロックの上のコンボボックスの左側でUserFormを選び、右側でInitializeを選んでInitializeイベントハンドラを表示させ、変数fに0を入れるVBAを書きます。 VBAの場合は変数名が書かれた時点で変数を作ってくれます。プロシージャ内で変数が出てくると、プロシージャ内でのみ使われる変数として作成されます。今回のようにフォーム全体で使いたい場合は(1)のようにプロシージャの外にDim文で「変数yを現在のコードブロック全体で使います」と宣言します(Dim文で変数yを設定することを変数yを宣言すると言います)。

以下が実行したときの画面です。押すたびに画像が変わります。

図20:イメージの例題実行画面