かっきぃーの雑記帳

おもしろき こともなき世を おもしろく

とりあえず使えるエクセルユーザーフォーム超入門 / 次の処理に進めるために重要なコマンドボタン(CommandButton)

Lesson2 ユーザーフォームの作り方 基礎の基礎

コマンドボタンの配置

テキストボックスなどに指定された文字を入力した後、その結果をどうするのか、例えば決められたセルにテキストボックスの値を割り当てる等の処理をプログラムする必要があります。そのために必要となるのがコマンドボタン(CommandButton)。ひとつのフォームに複数配置し、処理を分岐することもできます。

ツールボックスで「テキストボックス」を選択し、フォーム上の始点でクリックし、そのまま終点までドラッグすることで、ボタン作成するので、大きさも自由自在です。

f:id:k_create:20180924020800p:plain

 

ボタン表面の文字を変更する

ボタンを作成したら、ボタン表面にはそのボタンの名前(オブジェクト名/例:CommandButton1)が表示されていますが、このままではボタンの役割が分かりませんので、このボタン表面の文字を変更しましょう。Caption(プロパティ)に入力する、または、直接クリックして変更することができます。

ちなみに、この文字はラベル(Label)と同様に[Font]でフォントの種類や大きさ、スタイルを[ForeColor]で文字色を変更することができます。また、[BackColor]でボタンの色を変更することもできます。

 

スポンサーリンク

 

 

ボタンをクリックしたときの処理マクロを作成する

一連のフォームの作成においてこのコマンドボタンをクリックして、マクロの処理を行う流れが最も重要です。まずは、上述したテキストボックスに入力した文字列をセル[A1]に入力するという、シンプルなパターンで枠組みを紹介します。

現在、フォームが表示されている状態なので、プロジェクトウィンドウにあるアイコンをクリックして、コードの表示画面に切り替えます。ボタンを右クリックして[コードの表示]でも切り換えることができます。こうすることでマクロの記述画面が表示されますので、この中に処理するマクロを記述します。

f:id:k_create:20180924020806p:plain

(コードを表示させるアイコン)

f:id:k_create:20180924020811p:plain

(コマンドボタンをクリックしたときに実行するマクロ)

 

Sub CommandButton1_Click()  
   Range("A1") = UserForm1.TextBox1 (1)
   Unload Me (2)
End Sub  

 

[解説]

(1)セルA1に「UserForm1」の「TextBox1」の値を割り当てる
テキストボックスが複数ある場合は、「TextBox1」(オブジェクト名)を修正して対応します。

(2)ユーザーフォームを閉じる
これがないと(1)の処理が無事に終わっても、フォームは表示されたままになります。フォームを閉じるには、このように「Unload(=解放する) Me(=現在のユーザーフォーム)」とします。

 

連続して同じ作業をするのであれば、敢えて「Unload Me」を記載しない方法もあります。このサンプルの場合は、ボタンをクリックするごとにセル(A1)が上書きされます。ただ、このままだと×マークのクリックする以外に、フォームを閉じることができませんので、もうひとつボタンを作成し、そこのコードに「Unload Me」を記載するとスマートです。

 

フォームを実行する

          6       

とりあえず使えるエクセルユーザーフォーム超入門(もくじ)

 

スポンサーリンク