ユーザーフォームから連続してシートに入力する マクロ講座

ユーザーフォームから連続してシートに入力する

ユーザーフォームから連続してシートに入力する
ユーザーフォームから連続してシートに入力する

リンクユニット


Excel2016,2013 マクロ 35回

ユーザーフォームを閉じずに連続入力

前回までのユーザーフォームは、1行分のデータを転記したら終了し、再びユーザーフォームを呼び出して再入力するものでした。
ユーザーフォームを閉じずに、継続して入力、転記を繰り返すには、フォーム上のコントロールに入力されているデータをクリア(初期化)する必要があります。
今回は、コントロールのデータをクリアし、継続して入力するフォームを作成しましょう。
(サンプルファイルは、こちらから マクロ35回サンプルデータ

ユーザがコマンドボタンでクリア

今回の講義でやること
マクロ講座34回のフォームで、シートへの転記をした後、フォームを閉じずに表示したままにします。継続して入力するためにユーザーがフォーム上の各コントロールの値をクリアボタンからクリアにします。
ユーザーフォームから連続してシートに入力するマクロ1

クリアボタンを設置

CommandButtonをフォームに追加し、プロパティウィンドウからオブジェクト名をcmdClearに変更しています。
ボタンにコードを登録するために、ダブルクリックします。
ユーザーフォームから連続してシートに入力するマクロ2
Private Sub cmdClear_Click()
	(ここにコード)
End Sub
という、イベントプロシージャ自動的に、入力されています。コマンドボタンの名前を変更していない場合は、
Private Sub CommandButton1_Click()
End Sub
のようなコードのままです。間に以下のコードを記入しました。
ユーザーフォームから連続してシートに入力するマクロ3

フォーム上のコントロールのデータ消去

フォーム上のコントロールすべてをクリアするために変数としてCtrlを宣言、For Each ~ Nextでループします。
    Dim Ctrl As Control
    For Each Ctrl In Controls
テキストボックス内に入力した文字列は Value プロパティ、または、Text プロパティで設定可能です。そこで、If~ElseIfステートメントを使います。もしも、コントロールのタイプが”TextBox”ならば、Valueは””。
        If TypeName(Ctrl) = "TextBox" Then
            Ctrl.Value = ""

オプションボタンの未選択状態

オプションボタンの選択状態をクリアにするには、未選択状態のFalse、あるいは選択でも未選択でもないNullをValue プロパティで設定できます。そこで、もしも、コントロールのタイプが”OptionButton”ならば、ValueはFalse。
        ElseIf TypeName(Ctrl) = "OptionButton" Then
            Ctrl.Value = False

コンボボックスを空欄にする

コンボボックスは、テキストボックスと同様に Value や Text プロパティから設定ができます。そこで、もしも、コントロールのタイプが”ComboBox”ならば、Valueは””と設定してやります。
        ElseIf TypeName(Ctrl) = "ComboBox" Then
            Ctrl.Value = ""
        End If

フォーム操作の確認

データの登録が終わったら、クリアボタンを押します。
ユーザーフォームから連続してシートに入力するマクロ5
フォームデータがクリアされました。
ユーザーフォームから連続してシートに入力するマクロ6