ユーザーフォームのコマンドボタンとオプションボタンを使って入力
Excel2016,2013 マクロ 34回
入力を楽にするコントロール
ユーザーフォームからの入力を楽にするために、オプションボタンを追加しましょう。
オプションボタンは複数の選択肢を表示し、そこから1つだけデータを選んでもらうというコントロールです。
複数のグループを使い分けたい時は、フレームコントロールを使ってグループ化することができます。
(サンプルファイルは、こちらから
マクロ34回サンプルデータ)
フォームのリスト入力までのコード
マクロ講座33回までのフォームの状態でリストに転記するコードは、以下のようになっています。
Private Sub cmdEntry_Click() Me.Hide Sheet1.Select Range("B4").End(xlDown).Offset(1, 0).Select ActiveCell.Value = txtNo.Value ActiveCell.Offset(0, 1).Value = txtName.Value ActiveCell.Offset(0, 2).Value = txtID.Value ActiveCell.Offset(0, 3).Value = txtad.Value ActiveCell.Offset(0, 5).Value = combblood.Value Unload udfrm End Sub
オプションボタンを追加する
VBEを開き、フォームオプションボタンを追加しましょう。
ルールボックスのオプションボタンをクリックして、フォーム上で、ボタンの位置とサイズを決めます
次にオブジェクト名と表示名を変更します。
もう一方のオプションボタンもオブジェクト名とキャプションを変更しておきましょう。
オプションボタンをフレームで囲む
フレームを利用すると、オプシヨンボタンをグループ化して使用することができます。
フレームは先に作成しておいた方がいいのですが、今回は後から作ったので、操作上ドラッグして移動します。
フレームの表示名を変更しています。その中にオプションボタンをドラッグして入れると、グループ化します。
ここまでの操作を入力するためのコードです。
Private Sub cmdEntry_Click() Me.Hide Sheet1.Select Range("B4").End(xlDown).Offset(1, 0).Select ActiveCell.Value = txtNo.Value ActiveCell.Offset(0, 1).Value = txtName.Value ActiveCell.Offset(0, 2).Value = txtID.Value ActiveCell.Offset(0, 3).Value = txtad.Value If OpMale.Value = True Then ActiveCell.Offset(0, 4).Value = "男" Else ActiveCell.Offset(0, 4).Value = "女" End If ActiveCell.Offset(0, 5).Value = combblood.Value Unload udfrm End Sub
If OpMale.Value = True Then オプションボタンの男性欄にチェックが入ったら選択状態の値がValueプロパティのTrueとなります。
ActiveCell.Offset(0, 4).Value = "男" ActiveCellから行0、列4つ移動した値が"男"となります。そうでなければ、値は"女"です。
ActiveCell.Offset(0, 5).Value = combblood.Value ActiveCellから行0、列5つ移動した値がコンボボックスの値という意味になります。
ActiveCell.Offset(0, 4).Value = "男" ActiveCellから行0、列4つ移動した値が"男"となります。そうでなければ、値は"女"です。
ActiveCell.Offset(0, 5).Value = combblood.Value ActiveCellから行0、列5つ移動した値がコンボボックスの値という意味になります。
フォームに年齢を入力してもらうテキストボックスとラベルを配置しておきましょう。オブジェクト名もtxtAgeに変更しました。
テキストボックスの値を転記するコードを追加しておきます。
ActiveCell.Offset(0, 6).Value = txtAge.Value
Private Sub cmdEntry_Click() Me.Hide Sheet1.Select Range("B4").End(xlDown).Offset(1, 0).Select ActiveCell.Value = txtNo.Value ActiveCell.Offset(0, 1).Value = txtName.Value ActiveCell.Offset(0, 2).Value = txtID.Value ActiveCell.Offset(0, 3).Value = txtad.Value If OpMale.Value = True Then ActiveCell.Offset(0, 4).Value = "男" Else ActiveCell.Offset(0, 4).Value = "女" End If ActiveCell.Offset(0, 5).Value = combblood.Value ActiveCell.Offset(0, 6).Value = txtAge.Value Unload udfrm End Sub
実際にフォームを実行してみましょう。
データがフォームからリストに転記されました。
フォームのコードが、1回登録すると、閉じるように書いてありますが、次回は連続で入力したい場合のコードを記述していきます。
お疲れさまでした。
お疲れさまでした。