- ベストアンサー
Access で 特定の文字の個数をしりた
有り、無の二つがフィールド内にあり無の合計をテキストボックスに表示するようなVBAを 教えて頂けないでしょうか。 何卒、宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「有り、無の二つがフィールド内にあり」ということは、 テーブルをレコードソースとするフォームの「フィールド」 という解釈でいいですか。一応、その解釈で。 書き方はいろいろですが、レコードセットをループ する仕様で。フォームのレコードソースがテーブル なのか、クエリなのか分からないので一応 DAOのRecordsetCloneを使用します。 >「表示のタイミングですが、フォームが開かれた 時に無の全個数を表示しようとしております。」 ということなので、開くときのイベントで設定します。 DAOを使うので、コード表の参照設定でDAOの チェックを確認してください。 Private Sub Form_Open(Cancel As Integer) Dim rs As DAO.Recordset Dim i As Long Set rs = Me.RecordsetClone i = 0 rs.MoveFirst Do Until rs.EOF If rs!申請有無 = "無" Then i = i + 1 End If rs.MoveNext Loop Me!無個数 = i rs.Close: Set rs = Nothing End Sub 一応、以下のようなフォームとします。 もし、サブフォームであれば、補足してください。
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
どのようなタイミングで、個数を計算したいのか、 つまり、ボタンのクリック時のイベントであるとか、 フォーカスを取得したときとか、など。 また、個数を調べるテキストボックスはフォームの レコードソースの連結コントロールであるのか、 などですが、いずれにしても基本的なことは あまり変わりがないので、個数を調べるテキストボックスの ダブルクリック時のイベントで対応しておきます。 何か、不都合があれば補足してください。 個数を調べるテキストボックスの名前を、 「tx文字列」 とし、個数を表示するテキストボックスを、 「tx個数」 とします。なお、「tx文字列」がサブフォーム にあったりするときは補足してください。 Private Sub tx文字列_DblClick(Cancel As Integer) Dim myStr As String Dim i As Long Dim j As Long 'Me!tx個数.SetFocus 'Me!tx文字列.SetFocus j = 0 If Not IsNull(Me!tx文字列) Then For i = 1 To Len(Me!tx文字列) If Mid(Me!tx文字列, i, 1) = "無" Then j = j + 1 End If Next i End If Me!tx個数 = j End Sub なお、「tx文字列」の文章がどのようなタイミングで セットされるのかわかりませんが、タイミングなどに より、テキストボックスがDirtyの状態、すなわち 文章の保存が連結コントロールであれ、非連結 コントロールであれ、確定していない場合は 読み取れない場合があります。たとえば、テキスト ボックスに文章をはりつけ、すぐにダブルクリック をしたときなどです。そのときは あれこれする必要があったり、手動で、すなわち エンターキーを叩くとか、フォーカスを別の コントロールに移動させて戻したりするか、 これらのいずれかをVBAで行なうかのいずれかです。 上記の、コードの Me!tx個数.SetFocus Me!tx文字列.SetFocus が、その対応の一部です。一応、コメントアウト していますが、解除してみたりして確認してみてください。 一応、このことを念頭において確認してみてください。
お礼
いつもいつも、色々な質問にお答え頂きましてありがとうございます。 今回はなかなかの難問にも関わらずお知恵を使っていただき、大変恐縮しております。 これからも宜しければご助言頂けます様宜しくお願い致します。
補足
表示のタイミングですが、フォームが開かれた時に無の全個数を表示しようとしております。 Private Sub Form_Current() Dim myStr As String Dim i As Long Dim j As Long 'Me!テキスト36.SetFocus 'Me!申請有無.SetFocus j = 0 If Not IsNull(Me!申請有無) Then For i = 1 To Len(Me!申請有無) If Mid(Me!申請有無, i, 1) = "無" Then i = j + 1 End If Next i End If Me!無個数 = i End Sub 上記では個数を数える事が出来ません。 無個数→テキストボックス名 申請有無→有無が 無 有 無 無 有 などと連なっております。 大変恐縮ですが、再度お知恵を拝借できないでしょうか。 何卒、宜しくお願い致します。
「無」の数をクエリでだせますか?(できますか?)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
>表示するようなVBAを教えて頂けないでしょうか? それは、無理ってもんですよ。 何時、どこで、誰が、なぜ・・・こういういわゆる5W1Hをはっきりさせないと・・・。
お礼
すごーーーーーーい。出来ました。本当に神様みたいな人ですね!ファンになってこんなに嬉しいことはありません。大変ありがとうございました。 今後も色々と教えてもらうかもしれませんが、ご指導、ご鞭撻、何卒、宜しくお願い致します。