- ベストアンサー
マクロでフォーム処理を繰り返し
- マクロでフォーム処理を繰り返し行う方法はありますか?
- 例えば、フォームのクリックイベントをループ処理できないでしょうか?
- 100個のラベルのクリックイベントを一括で処理する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サンプルをアップしてもいいのですがコードの説明がちょと面倒なので 次のサイトにCommandButtonのサンプルと説明が載ってますので自分でトライしてみてください。 その上で分からないところがあったら再度質問してください。 ある程度分かっての質問なら回答もし易いので。 http://www.moug.net/skillup/opm/opm08-05.htm 以上。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロというからエクセルかアクセスのVBAでのことかな。それぐらい質問に書くべきです。 VBかエクセルVBAかUserForm上かワークシート上の貼り付けかで(差がある)微妙な点だと思うから。 エクセルVBAでやってみました。 エクセルVBAでユーザーフォームを1つ挿入。 ラベルコントロール(コントロールツールボックスから)を4つ(何個でも良い)貼り付けた。 コマンドボタンを1つ貼り付けた。 ボタンのクリックイベントに Private Sub CommandButton1_Click() For i = 1 To 4 UserForm1.Controls("Label" & i).BackColor = RGB(255, 0, 0) Next End Sub Sub/ユーザーフォームの実行でフォームが表示され、ボタンをクリックするとボタンの色が赤くなりました。 コントロール配列が使えるVB6や使えない、VB.NET以後などそれぞれで 違うややこしい箇所です。 あるいはフォームとコントロールツールバーでも違う点があったりする。
補足
回答ありがとうございます。 質問をはしょり過ぎ、質問の意図が伝わらず申し訳ありませんでした。 前提としてはExcel VBAのユーザーフォーム上に配置したラベルのイベント処理です。 ANo.1の方の回答へ質問の補足をさせて頂きましたのでそちらをご覧頂きご回答頂ければ幸いです。
- pbforce
- ベストアンサー率22% (379/1719)
100個あるラベルのどれか1つをクリックすると、全部のラベルの色を変えればよいのですか? あくまでも、クリックしたラベルだけ色を変えますか?>そうすると繰り返し処理する必要はないか?
補足
回答ありがとうございます。 クリックしたラベルだけを変化させたいと考えております。 質問に記述したイベントを記述していく時や下記のように処理を追加した時、100回もコピー、ペーストしたり"Label○○"の○○の数字を書き換えたりするのが面倒臭く変更漏れや追加漏れが発生するかもしれないので、まとめる方法はないか質問致しました。 Private Sub Label1_Click() Label1.BackColor = RGB(255, 0, 0) Label1.Caption = "hoge" ← 処理を追加 End Sub ※「Label1_Click()」に追加した処理を「Label2_Click()」~「Label100_Click()」にも追加(『Label1.Caption = "hoge"』をコピー・貼り付け)し、それぞれ『Label2.Caption』~『Label100.Caption』に変更するのが面倒臭い(数字の変更はWithを使えば軽減されますが...)。 宜しくお願い致します。
お礼
回答ありがとうございます。 したいことは、まさにご紹介頂いたページのことです。 昨日このページ(http://itpro.nikkeibp.co.jp/article/COLUMN/20070511/270730/?P=2)を発見したのですがVBでは可能でもVBAでは”解決策が見つかっていない”と書いてあり諦めていました。 ありがとう御座いました。