- ベストアンサー
フォーム上の全てのコントロールを取得したい
フォーム上の全てのコントロールを取得したいです。 (サブフォームも含め) 自分なりにVBAで考えてみたのがこれです。 Sub test() Dim 数 As Long For Each 数 In Form_フォーム1.Controls.Count ’Debug.Print ? End If Next End Sub でもこれだけでもデバックしてみると 「コンハ゜イルエラー for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」 となります。 答えを教えてください! よろしくお願いします。 (アクセス2003です)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
n-junです。 >ただなぜ「Controls.Count - 1」とマイナス1になるのでしょう?(不思議です) インデックスが0から始まるからでは? コントロールが5個あれば、0~4までの”5個”と言う感じで。
その他の回答 (2)
- 30246kiku
- ベストアンサー率73% (370/504)
以下の方法がイメージしやすいかも? (自フォームのコントロールを取得) Dim ctl As Control For Each ctl In Me.Controls Debug.Print ctl.Name Next For Each ctl In Me.FSUB.Form.Controls '☆1 Debug.Print ctl.Name Next ※ ☆1での FSUB は、自フォームへ配置したサブフォームコントロールの名前です。 (☆1のところは、サブフォーム内のコントロールを取得)
お礼
見事こちらでもできました! ありがとうございます。
- n-jun
- ベストアンサー率33% (959/2873)
Sub try() Dim i As Integer For i = 0 To Form_フォーム1.Controls.Count - 1 Debug.Print Form_フォーム1.Controls.Item(i).Name Next End Sub AccessVBAは初めてなので、的はずれでしたらごめんなさい。
お礼
見事できました!ありがとうございます。 ただなぜ「Controls.Count - 1」とマイナス1になるのでしょう?(不思議です)
お礼
なるほど!納得しました!再度ありがとうございます。