プロが教えるわが家の防犯対策術!

こんにちわ

私の環境はOS:Xp
     ACCESS2000です。

タイトルに書きました通り
「AccessVBAでループ使用時にフォームの数値項目名を増減させたい」のです。

例えば、
Do Until ~ Loop の中で、
顧客名1という項目名があったとします。
その「1」の部分をループが回るごとに1づつ増やし、
顧客名1、顧客名2、顧客名3・・・
としていきたいのです。

知っておられる方がおられましたら、どうか宜しくお願いします。

A 回答 (3件)

> 顧客名1という項目名があったとします。



コントロール名ということですよね?

Dim lngIdx As Long
For lngIdx = 1 To 3
  Debug.Print Me.Controls("顧客名" & lngIdx)
Next lngIdx

のようにすれば大丈夫だと思います。

この回答への補足

ありがとうございます! 大変参考になりました。

あつかましいのですが、追加で初歩な質問をさせていただきます。

Dim lngIdx As Long
For lngIdx = 1 To 3
  Debug.Print Me.Controls("顧客名" & lngIdx)
Next lngIdx

上記の「"顧客名"」というコントロール名なのですが、サブフォームに作成しているので
今までは、
「Me.顧客管理サブフォーム!顧客名1」
という記述をしておりました。

上記の場合、どこにセミコロン等を使えばよいのでしょうか?

追加質問で失礼かとは思いますが、宜しくお願いします。

補足日時:2004/12/03 16:13
    • good
    • 0
この回答へのお礼

>Debug.Print Me.Controls("顧客名" & lngIdx)
>の時はうまくいけたんですけど、

>Debug.Print Me.Controls(Me.顧客管理サブフォーム.Form("顧客名" & lngIdx))
>にすると「型が一致しません」とエラーがでました。

上記の問題ですが、おかげさまで解決いたしました。
Debug.Print Me.Controls(Me.顧客管理サブフォーム.Form("顧客名" & lngIdx))

Me.顧客管理サブフォーム.Form("顧客名" & lngIdx)
こうする事で解決いたしました。なぜだかは解らないのですが・・・

色々とありがとうございました。

お礼日時:2004/12/03 17:17

> Me.顧客管理サブフォーム!顧客名1



Me.顧客管理サブフォーム.Form.Controls("顧客名" & lngIdx)
とか、
Me.顧客管理サブフォーム.Form("顧客名" & lngIdx)
とかのようにすれば大丈夫だとは思います。

この回答への補足

ありがとうございます。

しかしなぜか「型が一致しません」というエラーがでます。

lngIdx の型宣言がおかしいのかと、long,integer,stringなどを試したのですが、同じエラーが表示されてしまいます。

どの箇所が問題の可能性があるのでしょうか?

宜しくお願いします

補足日時:2004/12/03 16:43
    • good
    • 0
この回答へのお礼

ちなみに

Debug.Print Me.Controls("顧客名" & lngIdx)
の時はうまくいけたんですけど、

Debug.Print Me.Controls(Me.顧客管理サブフォーム.Form("顧客名" & lngIdx))
にすると「型が一致しません」とエラーがでました。

どのようにしたら解決できるのでしょうか?

宜しくお願いします。

お礼日時:2004/12/03 17:07

ご説明だけでは判断できない部分がありますが


こんな感じでしょう。

※rsの宣言などについては省略します。
※通常レコードセットを最初から最後までチェックする
ループと考えています。
その中でIf条件に合致した場合新たにループが発生
する場合は以下の通りです。

●条件というのは「顧客名」というフィールドに具体的な
顧客名 例ABC株式会社 を発見した時という事でしょうか。その場合 顧客名1,顧客名2...と
変数にするのでしょうか。その当りがよくわかりません。

●無限ループに注意してください。



------プロシジャ例-------------------------------
※ rsを前もってレコードセットとして定義
レコードセットをOpenしておく
rs.movefirst
Do until rs.eof

If rs!フィールド1=Kokyakumei then

Do until 条件
ここにループを作る
 Loop 

End If

rs.movenext
Loop
    • good
    • 0

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