ユーザーフォームから連続してシートに入力する
Excel2016,2013 マクロ 35回
ユーザーフォームを閉じずに連続入力
前回までのユーザーフォームは、1行分のデータを転記したら終了し、再びユーザーフォームを呼び出して再入力するものでした。
ユーザーフォームを閉じずに、継続して入力、転記を繰り返すには、フォーム上のコントロールに入力されているデータをクリア(初期化)する必要があります。
今回は、コントロールのデータをクリアし、継続して入力するフォームを作成しましょう。
(サンプルファイルは、こちらから
マクロ35回サンプルデータ)
ユーザがコマンドボタンでクリア
今回の講義でやること
マクロ講座34回のフォームで、シートへの転記をした後、フォームを閉じずに表示したままにします。継続して入力するためにユーザーがフォーム上の各コントロールの値をクリアボタンからクリアにします。
マクロ講座34回のフォームで、シートへの転記をした後、フォームを閉じずに表示したままにします。継続して入力するためにユーザーがフォーム上の各コントロールの値をクリアボタンからクリアにします。
クリアボタンを設置
CommandButtonをフォームに追加し、プロパティウィンドウからオブジェクト名をcmdClearに変更しています。
ボタンにコードを登録するために、ダブルクリックします。
ボタンにコードを登録するために、ダブルクリックします。
Private Sub cmdClear_Click() (ここにコード) End Subという、イベントプロシージャ自動的に、入力されています。コマンドボタンの名前を変更していない場合は、
Private Sub CommandButton1_Click() End Subのようなコードのままです。間に以下のコードを記入しました。
フォーム上のコントロールのデータ消去
フォーム上のコントロールすべてをクリアするために変数として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
フォーム操作の確認
データの登録が終わったら、クリアボタンを押します。
フォームデータがクリアされました。