プロが教えるわが家の防犯対策術!

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

UserForm にいろいろなコントロールが有るのですが。

「質問-1」
 ・下記の様なプログラムで、読んでくるコントロールの順番は何で決まるのですか?
 ・TabIndexで決まる様でもない様ですが。

For Each MyControl In Me.Controls
char = MyControl.Name
      ・・・・・・・
Next
「質問-2」
  LabelコントロールはTabIndexまたはTabStopは無効なのでしょうか?

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます。

私のこだわりがあったようです。

(1)For Each...Nextにこだわった
(2)プログラムの行数を出来るだけ短くしたかった
(3)「"Comb入金"」...「"Text金額"」様な形でプログラムを組んで来た


今回もありがとうございました。

お礼日時:2010/09/29 14:16

>(1)ユーザフォームにデザインモードで追加した順


>これは、コントロールの配置をそのままで自由に後から変更出来ないのでしょうか?

はい。
少なくともExcel2002と2003では変えられないです。

2007以降は分かりません。
(XML形式なら何とかなるんだろうか?)


>もし出来ないとすれば、初めから考えて配置しなければならないという事ですか

いえ、普通はそんなもの意識しませんよ。

ループの中で取得できるコントロールの順番が決まっていないとダメ、という理由があるのでしょうか?

この回答への補足

回答ありがとうございました。

>ループの中で取得できるコントロールの順番が決まっていないとダメ、という理由があるのでしょうか?

フォーム上の数多くのコントロールの中で
(1)コンボボックス2個とテキストボツクス4個の入力の有無と値の確認をする。
(2)その順番をComb1→Comb1→Text1→Text2・・・・とする

こんな理由で、前記の様なコーテイングをしました。

今回の様な目的を満たす、良い方法が有りましたらお聞かせ下さい。

補足日時:2010/09/29 06:42
    • good
    • 0

>「質問-1」


(1)ユーザフォームにデザインモードで追加した順
(2)ユーザフォームのInitializeイベントで追加した順
(3)「(1)」も「(2)」も両方ある場合は「(1)→(2)」の順

>「質問-2」
はい。無効です。
Labelですから。

この回答への補足

回答ありがとうございます。

・プログラムで全てのコントロールのプロパテイを読んだ時、エラーが出たので疑問に思いました
・「質問-2」は承知しました。

「質問-1」についてもう少しお願いします。
(1)ユーザフォームにデザインモードで追加した順

これは、コントロールの配置をそのままで自由に後から変更出来ないのでしょうか?
もし出来ないとすれば、初めから考えて配置しなければならないという事ですか

補足日時:2010/09/28 14:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!