ユーザーフォームを使ってExcelとリストにデータを追加する
ユーザーフォームを使ってExcelにデータを追加することができます。
1. はじめに
前々回#5、前回#6とユーザーフォームの作り方や使い方を紹介しました。
今回はその続きとして、ユーザーフォームを使ってExcelにデータを入力します。具体的にはユーザーフォームに入力フォームを新たに作成し、ユーザーが登録ボタンを押したら入力内容がExcelに保存されるプログラムを作ります。
2. 説明
今回は前回#6の続きになります。
既に以下の画像までは完成しているとして進めます。
まだの方は前回記事をご覧ください。
2.1 ユーザーフォームを改造する
以下のようなユーザーフォームを改造してください。
「名前」や「住所」のラベルは任意で配置してください。
プロパティの設定の仕方は以下の過去記事を参考にしてください。
⓪ユーザーフォーム
Height:400
Width:430
①名前のテキストボックス
オブジェクト名:txtName
Height:18
Left:60
Top:198
Width:108
②住所のテキストボックス
オブジェクト名:txtAddress
Height:18
Left:60
Top:226
Width:216
③電話番号のテキストボックス
オブジェクト名:txtTell
Height:18
IMEMode:3 - fmIMEModeDisable(数字しか入力できなくなる)
Left:60
Top:255
Width:150
④その他のテキストボックス
オブジェクト名:txtEtc
Height:42
Left:60
Top:288
Width:216
⑤登録ボタン
オブジェクト名:btnEntry
Caption:登録
Height:18
Left:318
Top:340
Width:78
2.2 コードを書く
次にコードを書いていきます。
赤枠のリストから、
左上のリストボックス:btnEntry
右上のリストボックス:Click
を選択してください。
意味としては、「登録ボタン(btnEntry)をクリック(Click)した時にプログラムを実行する」という意味になります。
次に以下のようにコードを追加します。
以上を実行すると次のように入力フォームが現れます。入力フォームに適当に記入します。
この状態で登録ボタンを押すとExcelに内容が保存され、入力フォームが空になります。
2.3 コードの説明
以下のif文は最低でも入力フォームの名前欄と住所欄に記入させるため、どちらかが空欄だったらエラーメッセージを出します。
次に以下のコードで入力フォームの内容をExcelに記入します。
Row = Range("A1048576").End(xlUp).Offset(1).Rowについては前記事で説明しました。
Range("A1048576").End(xlUp).Row はExcelの行を下から順に空欄かどうか判別していき、空欄でなくなった時の行を取得しています。今回はこのコードにOffset(1)が付いていますので、空欄でない行の一個下の行の番号を取得しています。例えば4行目までデータが記入されている場合、5行目を取得できます。
それ以下のコードはExcelのセル番号に入力フォームに記入されたテキスト内容を代入するコードです。
最後にユーザーフォームのリストにも追加し、入力フォームをクリアします。
3. おすすめ書籍
このシリーズはプログラミング初心者にも非常に分かりやすくてお勧めです。
私はプログラミングを初めて勉強する際、3番目の本を大学時代に買ってすごく助かりました。今でも手元に置いてるくらいです。
4. 最後に
次回は修正する機能を追加してみます。