- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コントロールタイプを絞ってループしたい)
コントロールタイプを絞ってループしたい
このQ&Aのポイント
- アクセスのフォーム上のコントロールをループし、テキストボックスだけを絞りたいです。
- 現在の方法ではテキストボックスの量が多く、処理に時間がかかっています。
- For Each ctl In Forms(myFormName).ControlType(acTextBox)とするとエラーになりました。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> これだとテキストボックスの量が多くて、2秒くらいかかるのですが > For Each ctl In Forms(myFormName).Controls > この時点で、テキストボックスだけ絞る方法はありますか? ないですね。 私がよくつかうのは、テキストボックスの名前を下記のように規則的にものにしておき、Forループで名前で参照します。 txt1 txt2 txt3 ・・・・・ txt100 下記はフォームのモジュールで、100個のテキストボックスに Null を代入する場合の例です。 Dim i As Long For i = 1 To 100 Me.Controls("txt" & i).Value = Null Next 多数のテキストボックスの名前を変更するのが面倒な時は、フォームをデザインビューで開いておいて、 標準モジュールの下記の関数を実行します。 Sub SetTxtName() Dim myFormName As String Dim ctl As Control Dim i As Long myFormName = "フォーム1" For Each ctl In Forms(myFormName).Controls If ctl.ControlType = acTextBox Then i = i + 1 ctl.Name = "txt" & i End If Next ctl End Sub これで名前が変更されるので、あとはフォームを上書き保存します。 これは設計時に1回のみ実行すればOKです。
お礼
ありがとうございます。