• ベストアンサー

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

  • ACCESSのフォーム(テキストボックス)について

    テキストボックスに入力された文字が多いと、下方が隠れて見えなくなってしまいますが、 テキストボックス内部をいちいちスクロールするのではなく、テキストボックスがアクティブになったら、 中のテキストをポップアップのように表示させる機能(か、VBA)ってあるのでしょうか。 テキストボックスsetfocusで、フィールドをラベルに渡す??? できるだけわかりやすいように書いたつもりです。 でも、わかりにくかったら、すんません!

  • ACCESSのテキストボックス内の任意の文字

    お世話になります。 宜しくお願い致します。 ACCESS2010についてになります。 [フォームA]の[テキストボックスa]に、ある文字が含まれていたら、[テーブルB]の[フィールドb]を検索して、[フィールド'c]の値を[フォームA]の[テキストボックス'a]に表示させたいと思います。 (例) 『信長』が入っていたら、検索結果を表示させる。 [フォームA] [テキストボックスa] 『徳川家康』 ⇒  検索しない。 『織田信成』 ⇒  検索しない。 『織田信長』 ⇒  [テーブルB][フィールドb]を検索する。 [テーブルB] [フィールドb] [フィールド'c] 明智光秀 あけちみつひで 織田信長 おだのぶなが ⇒ 結果を表示する。 [フォームA] [テキストボックス'a] おだのぶなが おわかり頂けますでしょうか。 上手く表現できずにすみません。 お手数ですが、ご教示頂ければと思います。 宜しく、お願い致します。

  • Access フォームからの検索について

    初歩的な質問で申し訳ありませんが教えて下さい。 Access2000を使っています。 フォームに作ったテキストボックスに、入力した値又は文字と、特定のフィールドと比較し一致した場合にそのレコードをフォームに表示する方法はないでしょうか? いろいろと、web上のQ&Aなども見ましたが、思った動作をしませでした。 考えているのは、   ・テキストボックスにある値を入力し、『Enter』を押すとテキストボックスに入力した値と特定のフィールドと一致したレコードをフォームに表示 ・一致しない場合はメッセージボックスで一致しない旨を表示 です。 ・完全一致のみ表示 VBAでの動作を考えていますが、合わせて他の方法があれば教示頂ければと思います。 以上、お手数をお掛け致しますがよろしくお願い致します。

  • Access チェックボックス項目について

    最近Accessを始めました。 YouTubeやブログなどを見ながらコツコツやっておりますが、下記のような事ができるかどうかわかりません。 現在はマクロビルダーでできる範囲で作成しております。 vbaは難しそうで少しずつ勉強中です。 やりたいこと データにチェックボックス項目が数か所あります。 このデータをレポートにしたときに、チェックボックスに判定があった項目のみ抽出させ、そのフィールド名をレポートのテキストボックスに表示させたいです。 現在、テキストボックスのコントロールソース部にチェックボックス名を打ち込んでも、判定結果の"-1"が表示されます。これをフィールド名にしたいです。 説明がわかりずらいかもしれませんが宜しくお願い致します。

  • Accessのフォームで…

    Access 2010のフォームのリストボックスで、あるテーブルのフィールドの値を選択した場合に、同じテーブルの同じレコードにある違うフィールドの値を、テキストボックスに読み込みたいのですが、どうすれば出来ますでしょうか? VBAのサンプルソース等でも構いません。回答お願いしますm(_ _)m

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • ACCESSでフォームを作ってるのですが

    宜しくお願いします。 ACCESSのフォームでクエリのフィールドを テキストボックスに表示させたいのですが、 テキストボックスのプロパティのどこを いじればよいのでしょうか? 教えてください。

  • Access textboxの大きさを、文字数に合わせたい

    こんにちわ。 Accessについての質問なのですが、フィールドから入力された文字数 によってレポート上のテキストボックスの幅を変えたいのですがどの ようにすればよいでしょうか。 多分VBAで制御するものだと思うのですが、検索しても、テキストボッ クスの大きさに合わせて、フォントサイズを縮小したり拡大したりす る・・・といった内容は見つかるのですが、私の求めているものは 見当たりませんでした。 知っている方がおられましたら、是非よろしくお願いします。

  • ACCESSでのテキストボックスの文字の一部の色づけ

    テキストボックスの文字の一部の色を変えて、表示したいのですがどのようにすればよいでしょうか VBAででも結構です 教えてください

  • アクセスのテキストボックスで

    質問の仕方が適切でないかもしれませんがご了承下さい。 Access2000を使用しています。 社員テーブルには「性別」フィールドがあり、男なら1、 女なら2が登録されています。その社員テーブルを基にした フォームを作成し、そこに非連結のテキストボックスを作成、 1なら男、2なら女と表示させたいのです。 新規登録時は「性別」フィールドに連結したテキストボックス の更新後に表示させるようなVBAを記述しておいたのでうまく いくのですが、登録済みのデータを呼び出した場合は表示され ません(更新しているわけではないので当然といえば当然なの でしょうが・・・)。 何かしなければいけないのは分かっているのですが、どのイベント 時にどのようなアクションをすればよいのか教えてください。 よろしくお願いします。