- 締切済み
Access・VBAで、Controlsを使用した条件式(書き方)
Dcountを使っています。 DCount("[aa]", "[T_b]", "[a] = [a2] AND [b] = [b2] ") というような感じで条件をあてはめていますが、Controlsと変数を使用した条件がうまくいきません。 [vv] = me.controls(v) としてみました。 でもエラーになってしまいます。 me.controls(v)を変数に代入してみましたが、変数でもダメでした。 どのように記述すればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
例えば、テキストボックスの名前が、 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)
こんにちは。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 & "'") という感じです。
お礼
回答ありがとうございます。 forで変数を変更させて作業を行わせようとしているので、直接指定だと大変なんです。 Dcount(…(これまで条件が入ってます。)AND [vv] = me.controls("v")") としてみましたが、エラーになってしまいました。 (作業前に文字が赤くなってる状態です) どこがダメなのでしょうか?
補足
for w 1 to 37 DayDate = Me.Controls(w).value : : next のようにすると、エラーが出てしまいます。 forで使用している変数名をControlsで指定することはできないのでしょうか?