• ベストアンサー

ExcelVBAについて質問します、宜しくお願いします。

ExcelVBAについて質問します、宜しくお願いします。 UserForm にいろいろなコントロールが有るのですが。 「質問-1」  ・下記の様なプログラムで、読んでくるコントロールの順番は何で決まるのですか?  ・TabIndexで決まる様でもない様ですが。 For Each MyControl In Me.Controls char = MyControl.Name       ・・・・・・・ Next 「質問-2」   LabelコントロールはTabIndexまたはTabStopは無効なのでしょうか?

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

  • ベストアンサー
  • crossgate
  • ベストアンサー率65% (78/119)
回答No.3

それなら、  コンボボックスのオブジェクト名は「"Comb" + 連番」  テキストボックスのオブジェクト名は「"Text" + 連番」 という風に規則を作っておいてこんなコードを書けば良いです。 無駄なコントロールをループで回さなくて済みますし。 Sub Test()   Dim cnt As Integer      'コンボボックスのチェック   For cnt = 1 To 2     With Me.Controls("Comb" & cnt)       If .Value = "" Then         .SetFocus         MsgBox "未入力です。", vbExclamation + vbOKOnly         Exit Sub       End If     End With   Next      'テキストボックスのチェック   For cnt = 1 To 2     With Me.Controls("Text" & cnt)       If .Value = "" Then         .SetFocus         MsgBox "未入力です。", vbExclamation + vbOKOnly         Exit Sub       End If     End With   Next      MsgBox "入力されていました。", vbInformation + vbOKOnly End Sub

smiyaf
質問者

お礼

ありがとうございます。 私のこだわりがあったようです。 (1)For Each...Nextにこだわった (2)プログラムの行数を出来るだけ短くしたかった (3)「"Comb入金"」...「"Text金額"」様な形でプログラムを組んで来た 今回もありがとうございました。

その他の回答 (2)

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

>(1)ユーザフォームにデザインモードで追加した順 >これは、コントロールの配置をそのままで自由に後から変更出来ないのでしょうか? はい。 少なくともExcel2002と2003では変えられないです。 2007以降は分かりません。 (XML形式なら何とかなるんだろうか?) >もし出来ないとすれば、初めから考えて配置しなければならないという事ですか いえ、普通はそんなもの意識しませんよ。 ループの中で取得できるコントロールの順番が決まっていないとダメ、という理由があるのでしょうか?

smiyaf
質問者

補足

回答ありがとうございました。 >ループの中で取得できるコントロールの順番が決まっていないとダメ、という理由があるのでしょうか? フォーム上の数多くのコントロールの中で (1)コンボボックス2個とテキストボツクス4個の入力の有無と値の確認をする。 (2)その順番をComb1→Comb1→Text1→Text2・・・・とする こんな理由で、前記の様なコーテイングをしました。 今回の様な目的を満たす、良い方法が有りましたらお聞かせ下さい。

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.1

>「質問-1」 (1)ユーザフォームにデザインモードで追加した順 (2)ユーザフォームのInitializeイベントで追加した順 (3)「(1)」も「(2)」も両方ある場合は「(1)→(2)」の順 >「質問-2」 はい。無効です。 Labelですから。

smiyaf
質問者

補足

回答ありがとうございます。 ・プログラムで全てのコントロールのプロパテイを読んだ時、エラーが出たので疑問に思いました ・「質問-2」は承知しました。 「質問-1」についてもう少しお願いします。 (1)ユーザフォームにデザインモードで追加した順 これは、コントロールの配置をそのままで自由に後から変更出来ないのでしょうか? もし出来ないとすれば、初めから考えて配置しなければならないという事ですか

関連するQ&A

専門家に質問してみよう