• ベストアンサー

表記方法

ACCESSVBAでの質問です。 入力項目を10箇所用意して、名前を「Search1」~「Search10」と付けています。 このボックスのNULLチェックをループを使い行いたいのですが、以下の書き方だとsearchには文字で"search1"と入ってしまい、ボックスの値を取ることが出来ません。 search1~10の値を取得するにはどのように書けばいいのでしょうか。 よろしくお願い致します。 Do While counter <= 10 Dim search As String search = "search" & counter If Check_Numeric(search) = False Then error = "NULL" End If counter = counter + 1 Loop

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

  • ベストアンサー
  • maro200
  • ベストアンサー率45% (15/33)
回答No.2

こんにちは。 3行目をこう変えるだけでよいのではないでしょうか。 (Meは、Formです。ここをForm名に置き換えてもよいです。) ↓↓↓↓↓ search = Me("search" & counter)

amateur3
質問者

お礼

きっと簡単な方法があるはずだと思いながらも、全然わからなくて困っていました。 本当に助かりました。ありがとうございます。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 コレクションを使用すると出来ます。 とりあえず、全てテキストボックスとして、 (宣言部) Private TextCollection As New Collection (フォームのLoadイベントなどで) With TextCollection   .Add Item:=Me!Search1   .Add Item:=Me!Search2   (中略)   .Add Item:=Me!Search10 End With (Nullチェックするプロシージャで) Dim TempText As TextBox For Each TempText In TextCollection   TempText.SetFocus   If Check_Numeric(TempText.Text) = False Then     error = "NULL"   End If Next TempText (順番に値を配列変数に代入する場合は) Dim Str() As String Dim i As Long ReDim Str(TextCollection.Count - 1) For i = 1 To TextCollection.Count   TextCollection(i).SetFocus   Str(i - 1) = TextCollection(i).Text Next i 詳細はヘルプで"Collection"を参照して下さい。 では。

amateur3
質問者

お礼

いつも有難うございます。 毎回わかりやすく書いて頂きとても感謝しています。 今回はmaro200さんの簡単なやり方で対応しようと思います(笑) また何かあればよろしくお願いします。

関連するQ&A

専門家に質問してみよう