ユーザーフォームのコマンドボタンとオプションボタンを使って入力 マクロ講座

ユーザーフォームのコマンドボタンとオプションボタンを使って入力

ユーザーフォームのコマンドボタンとオプションボタンを使って入力
ユーザーフォームのコマンドボタンとオプションボタンを使って入力

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を開き、フォームオプションボタンを追加しましょう。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ1
ルールボックスのオプションボタンをクリックして、フォーム上で、ボタンの位置とサイズを決めます
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ2
次にオブジェクト名と表示名を変更します。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ3
もう一方のオプションボタンもオブジェクト名とキャプションを変更しておきましょう。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ4

オプションボタンをフレームで囲む

フレームを利用すると、オプシヨンボタンをグループ化して使用することができます。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ5
フレームは先に作成しておいた方がいいのですが、今回は後から作ったので、操作上ドラッグして移動します。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ6
フレームの表示名を変更しています。その中にオプションボタンをドラッグして入れると、グループ化します。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ7
ここまでの操作を入力するためのコードです。
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つ移動した値がコンボボックスの値という意味になります。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ8
フォームに年齢を入力してもらうテキストボックスとラベルを配置しておきましょう。オブジェクト名もtxtAgeに変更しました。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ9
テキストボックスの値を転記するコードを追加しておきます。 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
実際にフォームを実行してみましょう。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ10
データがフォームからリストに転記されました。
ユーザーフォームのコマンドボタンとオプションボタンを使って入力マクロ12
フォームのコードが、1回登録すると、閉じるように書いてありますが、次回は連続で入力したい場合のコードを記述していきます。
お疲れさまでした。