• ベストアンサー

Access2010 フォーム内のカウントについて

フォームにテキストボックスが16個あり、 S1 S2 S3 … S16 と、それぞれ名前がついております。 それぞれのテキストボックには 0~3 のいずれかの数字が入ります。 この16個のテキストボックスを範囲として、 1:「1」は何個入っているか? 2:「2」または「3」が何個入っているか? をそれぞれ別のテキストボックスに値を返したいと思っています。 Count 関数や DCount 関数を駆使してみましたが、 思うような値が返って来ません。 どのような計算式になるのでしょうか。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

>しかし、AA やBB をクリックしないと、結果が反映されないため、 この部分の挙動が少しわからないのですが、フォームの 構造の問題ですかね。 一応、   Me!AA = ans1   Me!BB = ans2 の後にMe.Requeryを追加して、 Me!AA = ans1 Me!BB = ans2 Me.Requery のようにしてみてください。 一応、単票フォームということで回答しています。 もし、何かフォームに込み入った仕掛けがあるならば 補足してみてください。

ryokucha68
質問者

お礼

あれから色々試した結果、全く別の方法で解決してしまいました。 お忙しいところ返答いただきましてありがとうございました。 一応解決したので締め切らせていただきます。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 テキストボックスの数が16なので >For i = 1 To 6 を >For i = 1 To 16 にしてください。

ryokucha68
質問者

お礼

ありがとうございます。 一応目的の結果は出ました。 しかし、AA やBB をクリックしないと、結果が反映されないため、 S1 S2 … S16 のテキストボックスの値が変動した時に連動して AA や BB の値が変わるようにしたいのですが、 どうしたらよろしいでしょうか。 お手数をお掛けしますが、引き続きお願いいたします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

ベタなコードで。 集計を表示するテキストボックスを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 表示するテキストボックスの名前は実際に合わせて変更 してください。

関連するQ&A