• ベストアンサー

VBAのループ処理

エクセルVBAにてテキストボックス、ラベルが複数ある フォームで入力ボタンを(コマンドボタン)クリックした時に 指定した複数のテキストボックス、ラベルをループ処理で空白に したいのですが どのようにすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。補足拝見しました。 空白にするテキストボックス、ラベルの名前に規則性はありますか? TextBox1~TextBox5 Label1~Label5 と決まっているのであれば、以下のようにすればできるかと思います。 (TextBox1でなくてText1なら、そのように修正してください) Private Sub CommandButton1_Click()  Dim i As Integer  For i = 1 To 5   Controls("TextBox" & i).Text = ""   Controls("Label" & i).Caption = ""  Next End Sub まだ私が質問内容を把握しきれていなくて、やりたいことと違う場合は補足をお願いします。

77TAKETAKA
質問者

お礼

説明が悪くてすみません。 有難うございます。 思いどうりの動きになり、他の動きにも 応用して流用できました。

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

こんな感じでしょうか。 Private Sub CommandButton1_Click()  Dim Obj As Variant  Dim i As Integer  '指定したテキストボックスとラベルのオブジェクト名を列挙  Obj = Array(TextBox1, TextBox2, Label1, Label2)    For i = 0 To UBound(Obj)   If TypeName(Obj(i)) = "TextBox" Then    Obj(i).Text = ""   Else    Obj(i).Caption = ""   End If  Next End Sub

77TAKETAKA
質問者

補足

すみません。イメージはVBのフレーム内にある テキストを For i=1 TO 5 Text1(i)="" Next i 以上で5個のテキストを空白にするイメージなのですが・・

関連するQ&A

  • VBAワーク シート名前を付けて作成

    エクセルVBAにて 原紙とゆう名前のワークシートをコピー処理して 入力フォームにテキストボックス1と2があり コピーした原紙とゆうワークシート名から テキストボックス1と2に入力した項目が 合わさってワークシート名に変更する方法はあるのでしょうか? 例)テキストボックス1に 123   テキストボックス2に 456 コマンドボタン1をクリックすることによって ワークシート名が123456となるようにしたいのですが? 宜しくお願いいたします。

  • エクセル VBA 曜日による処理?

    エクセルVBAにて複数社注文書を入力→1日の注文締切→ コマンドボタン1(プリントアウト)クリック時に 各社を統一した注文書の1日分をプリントアウトの 処理を行っているのですが、 毎週金曜日のみ注文書無しでプリントアウトを行いたい エクセルデーターがあるのですが注文書が無いため どうしても忘れがちになってしまいます。 金曜日のみ処理(指定データプリントアウト)を 行うプログラムをコマンドボタン1に追記すればいいと 思うのですが、教えていただけないでしょうか? また、出来るならば各曜日の指定がわかりますと 助かります。 以上宜しくお願いいたします。

  • ACCESS VBA フォーム複数条件

    ACCESSフォーム内のテキストボックスが空欄かどうかで条件分岐させる方法を教えてください。 フォーム内に複数テキストボックスがあります。 テキスト1 テキスト2 テキスト3 このテキストボックスの入力があるかどうかで、 エクスポートするクエリを変更したいです。 それぞれのテキストボックスの入力値は、 対応するクエリの抽出条件になっています。 少なくとも、テキスト1には入力があるという条件で、 ・テキスト2が空白なら、クエリ2を出力する ・テキスト3が空白なら、クエリ3を出力する という処理を行いたいのです。 マクロビルダーで、IFを使った処理は作ることができたのですが、 VBAを使って、同じ処理ができるようにしたいです。 どうかご教授のほど、よろしくお願いします。

  • エクセルVBAの質問です。

    こんばんわ! エクセルVBAのユーザーフォーム上のテキストボックス等をマクロを実行した状態で、動かしたりしたいのですが、可能でしょうか? 具体的には、コマンドボタン1をクリックすると、テキストボックス等を移動したりできるようにしたいです。 参考URL、あるいは方法があればご教授お願いいたします。

  • EXCELのVBAについて

    エクセルのVBAでユーザーフォームに作ったテキストボックスに入力した値を、コマンドボタンによる「実行」とともに別に作った標準モジュールの変数として代入するにはどうすれば良いでしょうか? 具体的な流れは、 マクロ実行  ↓ ユーザーフォーム出現  ↓ テキストボックスに数字を代入→「実行」  ↓ 変数を代入された標準モジュールによる処理完了 というものです。 ご教授お待ちしております。

  • エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて

    エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。

  • フォームのラベルのプロパティを自動で設定したい

    Access2013 vba です。 フォームの全てのラベル、テキストボックス、ボタン類をそれぞれの背景色や、テーマ、背景スタイルなどを設定したいのですが、どうやれば、全てのラベル、テキストボックス、ボタンなどを自動でループ処理で取得出来ますでしょうか。 よろしくお願いします。

  • Excel VBAについて質問です。

    VBA初心者です。 フォームを2つ作成しております。 1つはフォーム名[入力用] もう1つはフォーム名[要求元]です。 フォーム[要求元]はリストボックス[リスト]と コマンドボタン[入力]と[終了]があります。 リストボックスのデータはRowsourceでセル番地を直接指定してます。 フォーム[要求元]においてリストボックスでデータを選びコマンドボタン[登録]を押すと、 フォーム[入力用]のテキストボックスに代入する方法がわかりません。 どなたか御教授お願い致します。

  • VBAでユーザーフォームのテキスト等に空白欄があった場合に、メッセージボックスが出るようにしたい

    今VBAでシミュレーションソフトを作っていますが、 ユーザーフォームのテキスト、リストボックスで入力されたものが、処理されて結果が出るようにしています。 そのなかで、空白のテキスト等があった場合、間違った結果が出力されるので、空白テキストが出ないようにメッセージボックスが出るようにしたいのです。 テキストはTB1~TB6 リストボックスはLB1~LB6 あります。 入力ボタンを押すと どれかひとつでも空白があればメッセージボックスが出力され、 ユーザーフォームに戻るようにしたいです。 ご回答よろしくお願いします

  • Excel VBAのフォーム_ラベルの縦位置

    Excel VBAのフォームを作成しているのですが、 ラベルのキャプションの縦位置が指定できません。 テキストボックスを入力不可の状態にすると、文字が薄いグレーになってしまい、 ラベルにすると表示される文字が上によってしまいます。 ラベルの文字列を下付き文字にするか、テキストボックスのもじれるを黒くする方法を教えてください。 よろしくお願い致します。

専門家に質問してみよう