こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

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

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

投稿日時 - 2010-09-25 17:43:30

QNo.6207311

すぐに回答ほしいです

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

それなら、
 コンボボックスのオブジェクト名は「"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

投稿日時 - 2010-09-29 11:27:19

お礼

ありがとうございます。

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

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


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

投稿日時 - 2010-09-29 14:16:59

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>(1)ユーザフォームにデザインモードで追加した順
>これは、コントロールの配置をそのままで自由に後から変更出来ないのでしょうか?

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

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


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

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

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

投稿日時 - 2010-09-28 21:26:52

補足

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

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

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

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

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

投稿日時 - 2010-09-29 06:42:40

ANo.1

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

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

投稿日時 - 2010-09-27 13:33:41

補足

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

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

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

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

投稿日時 - 2010-09-28 14:07:18

あなたにオススメの質問