プログラミング

【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

書き方は様々あると思いますが、今回はこれで行きたいと思います。
後ほど解説していきますね。

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

実行してみよう

「B2」セルに足し算の結果が表示されれば成功です。
ならなかった方は抜け漏れがないかコードを確認してください。

コードの説明

上から順番に見ていきましょう。

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」が入力されます。

まとめ

以上で「ユーザーフォームを使ってみよう」は終了になります。
自分も勉強途中ですが、こんなの出来ないの?とか、ここはこうしたほうが良いよ!などありましたら下のコメント欄に書き込んで頂けると嬉しいです。
よろしくお願いします。それではまた。

-プログラミング
-

執筆者:


  1. […] 【Excel VBA】ユーザーフォームを使ってみよう3 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【Python】掲示板に「削除機能」を追加してみた①

以前作成した「Flask掲示板」に、投稿を削除する機能を追加してみました。「Flask-WTF」と「SQLAlchemy」を使ったものです。今回は、コードと機能を紹介したいと思います。 掲示板に「削除 …

【エクセル】で「ちょこっとプログラミング」発展編#1

プログラミングをしたことのない人向けにExcelでできる「ちょこっとプログラミング」を紹介します。今回は「セルの値を取得する」の【発展】として「空白のセルまで値を取得する」を題材にやっていきます。 基 …

【おすすめ】テキストエディタ

みなさんは「プログラミングコード」を何に書いていますか?様々な「テキストエディタ」がありますが今回は自分が使用しているおすすめのものを紹介します。 おすすめのテキストエディタ紹介 「テキストエディタ」 …

【VSCode】テキストの一括置換をしてみよう

コードを書いていて、「変数」を変更したいときに「文字を1つ1つ直した」ことはありますか?今回は「VSCode」の中で使える「テキストの一括置換」について紹介します。 VSCodeで一括置換してみよう …

【Python】Flaskを使ってみよう

前回は「Flaskとは」から「Flaskのインポート」まで紹介しました。今回は「Flask」を使って、動作確認までしていきたいと思います。 Flaskを使ってみよう サーバーにアクセスした際に「Hel …

YouTube