• 締切済み

Access・VBAで、Controlsを使用した条件式(書き方)

Dcountを使っています。 DCount("[aa]", "[T_b]", "[a] = [a2] AND [b] = [b2] ") というような感じで条件をあてはめていますが、Controlsと変数を使用した条件がうまくいきません。 [vv] = me.controls(v) としてみました。 でもエラーになってしまいます。 me.controls(v)を変数に代入してみましたが、変数でもダメでした。 どのように記述すればいいのでしょうか?

みんなの回答

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

例えば、テキストボックスの名前が、 Text1、Text2・・・ という風なら、 For i = 1 To 10   ret = DCount("[aa]", "[T_b]", "[vv] = " & Me.Controls("Text" & i))   ・・・ Next i という風になります。 Controlsの引数は、インデックス値か、コントロール名の"文字列"なので、数値で変化する部分を繋げます。 それから、DCount関数の引数は3つとも"文字列"なので、 [vv] = Me.Controls("Text" & i) ではダメで、 "[vv] = " & Me.Controls("Text" & i) と文字列として繋げる形にしなければいけません。 [vv]にMe.Controls(略)を代入するという意味ではなくて、 "[vv] = "と、Me.Controls(略)を文字列として繋げるということです。

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

こんにちは。maruru01です。 >me.controls(v) 「v」はコントロール名でしょうか。それともインデックス番号でしょうか。 コントロール名なら、 Me.Controls("v") と""で括る必要があります。 でも、普通に、 Me!テキスト1 とすればいいような気がしますが。 あと、コントロールの値を条件文字列に入れる場合は、直接なら、 DCount("[aa]", "[T_b]", "[vv] = '" & Me!テキスト1.Value & "'") とします。 なお、フィールド[vv]が数値型なら、「''」は不要なので、 DCount("[aa]", "[T_b]", "[vv] = " & Me!テキスト1.Value) とします。 変数にいったん格納するなら、 Dim temp As String temp = Me!テキスト1.Value DCount("[aa]", "[T_b]", "[vv] = '" & temp & "'") という感じです。

KODAMAR
質問者

お礼

回答ありがとうございます。 forで変数を変更させて作業を行わせようとしているので、直接指定だと大変なんです。 Dcount(…(これまで条件が入ってます。)AND [vv] = me.controls("v")") としてみましたが、エラーになってしまいました。 (作業前に文字が赤くなってる状態です) どこがダメなのでしょうか?

KODAMAR
質問者

補足

for w 1 to 37 DayDate = Me.Controls(w).value   :   : next のようにすると、エラーが出てしまいます。 forで使用している変数名をControlsで指定することはできないのでしょうか?

関連するQ&A