- ベストアンサー
Access2010 フォーム内のカウントについて
フォームにテキストボックスが16個あり、 S1 S2 S3 … S16 と、それぞれ名前がついております。 それぞれのテキストボックには 0~3 のいずれかの数字が入ります。 この16個のテキストボックスを範囲として、 1:「1」は何個入っているか? 2:「2」または「3」が何個入っているか? をそれぞれ別のテキストボックスに値を返したいと思っています。 Count 関数や DCount 関数を駆使してみましたが、 思うような値が返って来ません。 どのような計算式になるのでしょうか。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>しかし、AA やBB をクリックしないと、結果が反映されないため、 この部分の挙動が少しわからないのですが、フォームの 構造の問題ですかね。 一応、 Me!AA = ans1 Me!BB = ans2 の後にMe.Requeryを追加して、 Me!AA = ans1 Me!BB = ans2 Me.Requery のようにしてみてください。 一応、単票フォームということで回答しています。 もし、何かフォームに込み入った仕掛けがあるならば 補足してみてください。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
No1です。 テキストボックスの数が16なので >For i = 1 To 6 を >For i = 1 To 16 にしてください。
お礼
ありがとうございます。 一応目的の結果は出ました。 しかし、AA やBB をクリックしないと、結果が反映されないため、 S1 S2 … S16 のテキストボックスの値が変動した時に連動して AA や BB の値が変わるようにしたいのですが、 どうしたらよろしいでしょうか。 お手数をお掛けしますが、引き続きお願いいたします。
- piroin654
- ベストアンサー率75% (692/917)
ベタなコードで。 集計を表示するテキストボックスをAA、BBとします。 ボタンクリックのイベントで、 Private Sub コマンド0_Click() Dim ans1 As Long Dim ans2 As Long Dim i As Long For i = 1 To 6 If Me.Controls("S" & i) = 1 Then ans1 = ans1 + 1 End If If Me.Controls("S" & i) = 2 Then ans2 = ans2 + 1 End If If Me.Controls("S" & i) = 3 Then ans2 = ans2 + 1 End If Next i Me!AA = ans1 Me!BB = ans2 End Sub 表示するテキストボックスの名前は実際に合わせて変更 してください。
お礼
あれから色々試した結果、全く別の方法で解決してしまいました。 お忙しいところ返答いただきましてありがとうございました。 一応解決したので締め切らせていただきます。