• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コントロールタイプを絞ってループしたい)

コントロールタイプを絞ってループしたい

このQ&Aのポイント
  • アクセスのフォーム上のコントロールをループし、テキストボックスだけを絞りたいです。
  • 現在の方法ではテキストボックスの量が多く、処理に時間がかかっています。
  • For Each ctl In Forms(myFormName).ControlType(acTextBox)とするとエラーになりました。

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

  • ベストアンサー
回答No.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です。

GRIDKWBKMYD
質問者

お礼

ありがとうございます。

関連するQ&A