• ベストアンサー

Access で 特定の文字の個数をしりた

有り、無の二つがフィールド内にあり無の合計をテキストボックスに表示するようなVBAを 教えて頂けないでしょうか。 何卒、宜しくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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 一応、以下のようなフォームとします。 もし、サブフォームであれば、補足してください。

chi_ko6262
質問者

お礼

すごーーーーーーい。出来ました。本当に神様みたいな人ですね!ファンになってこんなに嬉しいことはありません。大変ありがとうございました。 今後も色々と教えてもらうかもしれませんが、ご指導、ご鞭撻、何卒、宜しくお願い致します。

その他の回答 (3)

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

どのようなタイミングで、個数を計算したいのか、 つまり、ボタンのクリック時のイベントであるとか、 フォーカスを取得したときとか、など。 また、個数を調べるテキストボックスはフォームの レコードソースの連結コントロールであるのか、 などですが、いずれにしても基本的なことは あまり変わりがないので、個数を調べるテキストボックスの ダブルクリック時のイベントで対応しておきます。 何か、不都合があれば補足してください。 個数を調べるテキストボックスの名前を、   「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 が、その対応の一部です。一応、コメントアウト していますが、解除してみたりして確認してみてください。 一応、このことを念頭において確認してみてください。

chi_ko6262
質問者

お礼

いつもいつも、色々な質問にお答え頂きましてありがとうございます。 今回はなかなかの難問にも関わらずお知恵を使っていただき、大変恐縮しております。 これからも宜しければご助言頂けます様宜しくお願い致します。

chi_ko6262
質問者

補足

表示のタイミングですが、フォームが開かれた時に無の全個数を表示しようとしております。 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 上記では個数を数える事が出来ません。 無個数→テキストボックス名 申請有無→有無が 無 有 無 無 有 などと連なっております。 大変恐縮ですが、再度お知恵を拝借できないでしょうか。 何卒、宜しくお願い致します。

noname#222886
noname#222886
回答No.2

「無」の数をクエリでだせますか?(できますか?)

回答No.1

>表示するようなVBAを教えて頂けないでしょうか? それは、無理ってもんですよ。 何時、どこで、誰が、なぜ・・・こういういわゆる5W1Hをはっきりさせないと・・・。

関連するQ&A