【Excel VBA】ユーザーフォームを使ってみよう3
前回はフォームのデザインまで作ることができました。
今回は「ボタン」にプログラムを登録していきます。
前回の記事はこちら
ユーザーフォームのデザインを作成しています。
「ボタン」にプログラムを登録しよう

前回までここまで作成しましたね。
現状「足し算」と書かれたボタンを押しても何も起こりません。
では早速プログラミングをして、動作(プログラム)を登録していきましょう。
VBAを開く

VBAを開いて「UserForm1」の画面を表示しましょう。


そうするとこのような画面に移ると思います。

右クリックから「コードの表示」を選択しても同じような画面に移ります。
ならなかった方はこちらも試してみてください。
プログラミングしてみよう
今回は下記のコードをそのまま貼り付けてみましょう。
Private Sub CommandButton1_Click()
Dim a As Integer
Dim b As Integer
a = TextBox1
b = TextBox2
Range("B2") = a + b
End Sub
書き方は様々あると思いますが、今回はこれで行きたいと思います。
後ほど解説していきますね。

はい。こんな感じにコピペできたでしょうか?
ではボタンを押して確認してみましょう。
実行してみよう

ならなかった方は抜け漏れがないかコードを確認してください。
コードの説明
上から順番に見ていきましょう。
Private Sub CommandButton1_Click()
--------------------------------------
Private Sub CommandButton1_Click()
--------------------------------------
Dim a As Integer
Dim b As Integer
a = TextBox1
b = TextBox2
Range("B2") = a + b
End Sub
「Private Sub CommandButton1_Click()」は
「CommandButton1」を「Click(クリック)」した時。という意味になります。
「CommandButton1」とは?

「足し算ボタン」のプロパティを見ると「オブジェクト名」のところに「CommandButton1」とあります。


同様に左のテキストボックスの「オブジェクト名」に「TextBox1」
右のテキストボックスには「TextBox2」とあります。
このようにオブジェクト(フォームに配置したもの)には、それぞれ「オブジェクト名」というものがあります。
それぞれ振り当てられた「オブジェクト名」をVBAで記述することで、入力された値を取得したり、処理を実行させることが出来ます。
Dim a As Integer
Private Sub CommandButton1_Click()
--------------------------------------
Dim a As Integer
--------------------------------------
Dim b As Integer
a = TextBox1
b = TextBox2
Range("B2") = a + b
End Sub
「Dim a As Integer」は
「変数の宣言」をしています。
「a」という変数を「Integer(整数型)」として扱います。という宣言になります。
「変数の宣言」をしなかった場合

入力した「10」が「文字列型」として扱われてしまい「10」と「10」で「1010」になります。
「○○型」は他にもあるので興味のある方は調べてみてくださいね。
a = TextBox1
Private Sub CommandButton1_Click()
Dim a As Integer
Dim b As Integer
--------------------------------------
a = TextBox1
--------------------------------------
b = TextBox2
Range("B2") = a + b
End Sub
「a = TextBox1」は
「a」に「TextBox1」に入力された値を代入する。という意味です。
先ほど説明した様に「TextBox1」は、左のテキストボックスの「オブジェクト名」なので「a」には左のテキストボックスに入力した「10」が代入されます。
同様に「b」には右のテキストボックスの値が入ります。
今回は「a」と同じ「10」ですね。
Range(“B2”) = a + b
Private Sub CommandButton1_Click()
Dim a As Integer
Dim b As Integer
a = TextBox1
b = TextBox2
--------------------------------------
Range("B2") = a + b
--------------------------------------
End Sub
「Range(“B2”) = a + b」は
「Range(“B2”) (B2セル)」に「a」と「b」を足したものを入力する。という意味です。
「a」と「b」には同じく「10」が代入されているので、「B2セル」には「10」+「10」の結果である「20」が入力されます。
まとめ
以上で「ユーザーフォームを使ってみよう」は終了になります。
自分も勉強途中ですが、こんなの出来ないの?とか、ここはこうしたほうが良いよ!などありましたら下のコメント欄に書き込んで頂けると嬉しいです。
よろしくお願いします。それではまた。
“【Excel VBA】ユーザーフォームを使ってみよう3” に対して1件のコメントがあります。