ユーザーフォーム

ユーザーフォームのデータ受け渡し

 ユーザーフォームで入力されたデータをExcelシートに書き込む作業、つまりデータの受け渡しについて解説します。

 ユーザーフォームは全回の 01 と 02 でつくった「会員登録」使います。

既に各コントロールは配置され、オブジェクト名も下図のようになっているはずです。

まずExcelの「会員名簿」は次の通りです。

またこのシート名は「会員名簿」となっています。

各プロシージャの作成と動きの確認

 まず標準モジュールの Moduel1 を開いてこのVBEに下記のプロシジャを書き入れます。

Sub 会員登録処理()

 UserForm1.Show

End Sub

これは「UserForm1」が開くマクロです。

これを「会員登録ボタン」にリンクさせます。

この方法は「マクロ実行用ボタンの作成」を参照してください。

「会員登録」のボタンを押してください。

「会員登録」のユーザーフォームが開きます。

ただまだこのフォームのマクロはできていませんので、とりあえずこのフォームの右上の×で閉じてください。

Altキー + F11で「標準モジュール」を開きます。

それで左上の「フォーム」の UserForm1 をダブルクリックします。

 会員名簿のコントロールを配置した画面が開きます。

ここのコントロール以外の点々になっているところ(どこでもOK)をダブルクリックしてください。

UserForm1 VBE画面が表示されます。

ここに次の計5つのプロシージャを書き入れます。

ココでは 「Private Sub ~」となっているプロシージャがありますが、普通に「Sub ~」と入力してください。

今はまだ気にしなくて大丈夫です。

Option Explicit より下にこのままコピペしても大丈夫です。

‘ ①UserForm1 が最初に開かれた時の処理

Private Sub UserForm_Activate()

AllClear

T1.SetFocus

End Sub

‘ ②-1 OP1が押されたら「登録」ボタンが有効になる

Private Sub op1_Click()

cmd1.Enabled = True

End Sub

‘ ②-2 OP2が押されたら「登録」ボタンが有効になる

Private Sub op2_Click()

cmd1.Enabled = True

End Sub

②-3 OP3が押されたら「登録」ボタンが有効になる

Private Sub op3_Click()

cmd1.Enabled = True

End Sub

‘ ③「登録」ボタンが押された時の処理

Private Sub cmd1_Click()

Dim 会員区分 As String

Dim LG As Long

If op1.Value = True Then

        会員区分 = “正会員”

ElseIf op2.Value = True Then

        会員区分 = “賛助会員”

ElseIf op3.Value = True Then

        会員区分 = “一般会員”

End If

LG = Worksheets(“会員名簿”). _

Range(“B4”).End(xlDown).Row

LG = LG + 1

With Worksheets(“会員名簿”)

        .Cells(LG, 2) = T1

        .Cells(LG, 3) = T2

        .Cells(LG, 4) = T3

        .Cells(LG, 5) = T4

        .Cells(LG, 6) = T5

        .Cells(LG, 7) = 会員区分

End With

AllClear

End Sub

‘ ⑤「クリア」ボタンが押された時の処理

Private Sub cmd2_Click()

AllClear

 T1.SetFocus

End Sub

⑥「終了」ボタンが押された時の処理

Private Sub cmd3_Click()

UserForm1.Hide

End Sub

ここまで出来ましたら、一旦右上のxボタンでこのVBEを閉じてください。

Excelの「会員名簿」シートが開かれます。

ここで「会員登録」ボタンを押してください。

ユーザーフォーム画面が開かれます。

ここで自由に年月日、氏名等を入力してみてください。

途中でやり直したい場合は「クリア」ボタンを押せば、再入力できます。

入力が終われば「登録」ボタンを押してください。

「会員名簿」に今入力してデータが入っています。

そのまま二人目、三人目と入力しても構いませんし、終了ボタンを押せば、ユーザーフォーム画面が閉じます。

まずはここまで一応の動きを確認してください。

各プロシージャについて

①UserForm1 が最初に開かれた時の処理

最初にこの UserForm1 が開かれたと同時に、④の AllClear のプロシージャが実行されます。

テキストボックスとオプションボタンをすべてクリア(リセット)します。

また、データが未入力の場合は、空データが登録されるのを防ぐためにcmd1(「登録」ボタン)を使用不可にします。

②-1・2・3

オプションボタンのいづれかが押されたら、cmd1(「登録」ボタン)を使用可能にします。

③「登録」ボタンが押された時の処理です。

シート「会員名簿」にユーザーシートの入力データが記録保存される内容です。

オプション1~3のどれが選択されたか(True)で、会員区分を決定します。

LGは会員名簿の最終の行番号を調べ、それに1を足した行に

ユーザーシートのデータを書き入れます。

※ 入力済セルの最終行番号については「入力済セルの最終行 End」を参照してください。

全て「会員名簿」にデータを書き入れた段階で、ユーザーシートを ④AllClear します。

④ 上記の通り、各コントロールをリセットします。

⑤ 「クリア」ボタンが押されたら、④AllClear を実行します。

⑥「終了」ボタンが押されたら、UserForm1 を閉じます。

ユーザーフォームのコントロール  ユーザーフォームには、文字を入力するテキストボックス、文字を表示するラベル、マクロを実行するボタンなど、コントロールと呼ばれるいろい...
プリンター・印刷範囲・倍率・用紙サイズの設定  ここではExcel文書の印刷にあたり、「プリンターの設定」「印刷範囲の設定」「印刷倍率の設定」「用紙の向きとサイズ」その他の主たる設...