こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2015-07-08 13:01:28

QNo.9008383

すぐに回答ほしいです

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

「有り、無の二つがフィールド内にあり」ということは、
テーブルをレコードソースとするフォームの「フィールド」
という解釈でいいですか。一応、その解釈で。
書き方はいろいろですが、レコードセットをループ
する仕様で。フォームのレコードソースがテーブル
なのか、クエリなのか分からないので一応
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


一応、以下のようなフォームとします。
もし、サブフォームであれば、補足してください。

投稿日時 - 2015-07-09 19:31:11

お礼

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

投稿日時 - 2015-07-10 09:53:16

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

が、その対応の一部です。一応、コメントアウト
していますが、解除してみたりして確認してみてください。

一応、このことを念頭において確認してみてください。

投稿日時 - 2015-07-09 00:50:09

補足

表示のタイミングですが、フォームが開かれた時に無の全個数を表示しようとしております。
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
上記では個数を数える事が出来ません。

無個数→テキストボックス名
申請有無→有無が





などと連なっております。
大変恐縮ですが、再度お知恵を拝借できないでしょうか。
何卒、宜しくお願い致します。

投稿日時 - 2015-07-09 15:38:13

お礼

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

投稿日時 - 2015-07-09 15:38:16

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

投稿日時 - 2015-07-08 16:18:30

ANo.1

>表示するようなVBAを教えて頂けないでしょうか?

それは、無理ってもんですよ。

何時、どこで、誰が、なぜ・・・こういういわゆる5W1Hをはっきりさせないと・・・。

投稿日時 - 2015-07-08 15:11:45

あなたにオススメの質問