アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォーム上の全てのコントロールを取得したいです。
(サブフォームも含め)

自分なりにVBAで考えてみたのがこれです。
Sub test()
Dim 数 As Long
For Each 数 In Form_フォーム1.Controls.Count
’Debug.Print ?
End If
Next
End Sub

でもこれだけでもデバックしてみると
「コンハ゜イルエラー
for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」
となります。
答えを教えてください!
よろしくお願いします。
(アクセス2003です)

A 回答 (3件)

n-junです。



>ただなぜ「Controls.Count - 1」とマイナス1になるのでしょう?(不思議です)
インデックスが0から始まるからでは?

コントロールが5個あれば、0~4までの”5個”と言う感じで。
    • good
    • 0
この回答へのお礼

なるほど!納得しました!再度ありがとうございます。

お礼日時:2009/04/15 23:06

以下の方法がイメージしやすいかも?


(自フォームのコントロールを取得)

  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のところは、サブフォーム内のコントロールを取得)
    • good
    • 0
この回答へのお礼

見事こちらでもできました!
ありがとうございます。

お礼日時:2009/04/15 00:14

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は初めてなので、的はずれでしたらごめんなさい。
    • good
    • 0
この回答へのお礼

見事できました!ありがとうございます。
ただなぜ「Controls.Count - 1」とマイナス1になるのでしょう?(不思議です)

お礼日時:2009/04/15 00:11

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A