プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

こんにちは。



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

↓↓↓↓↓

search = Me("search" & counter)
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/03/18 18:16

こんにちは。

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"を参照して下さい。
では。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/03/18 18:18

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