accessのフォームでブランクを取得する方法

このQ&Aのポイント
  • Accessのフォームで特定のフィールドに含まれるブランクの数を計算し、テキストボックスに表示する方法を教えてください。
  • 以前にVBAを使用して「無」という値の数を計算する方法を教えていただきましたが、同様の方法を試してもうまくいきません。
  • 良いアイデアや解決策があれば、教えていただきたいです。
回答を見る
  • ベストアンサー

accessでブランクを取得したい

フォームをオープンするタイミングであるフィールドのデータの中にブランクがあります。 そのブランク数を計算しテキストボックスに出したい。 以前に”無”の数を計算してテキストボックスに出すVBAを教えてもらいましたが、 そのまねをしてみましたが出来ません。良い知恵を教えてください。 Private Sub Form_Current() Dim ab As DAO.Recordset Dim j As Long Set ab = Me.RecordsetClone j = 0 ab.MoveFirst Do Until ab.EOF If ab!貸与対象者 = "isNull " Then j = j + 1 End If ab.MoveNext Loop Me!残数 = j ab.Close: Set ab = Nothing End Sub 上記のようにしてみましたが、出来ません。 宜しくお願い致します。 貸与対象者→フィールド ○○○○○ ×××××    ←ブランク ■■■■■ 残数→テキストボックス 以上です。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8466/19280)
回答No.1

If ab!貸与対象者 = "isNull " Then を If IsNull(ab!貸与対象者) Then にします。 元のままだと「貸与対象者のフィールドにisNullという文字列が入っているなら」と言う判定になってしまう。 必要なのは「貸与対象者のフィールドが空欄なのであれば」と言う判定です。 これらの2つは「似ているようでまったく違う」のでご注意を。

chi_ko6262
質問者

お礼

ありがとうございます。大変に助かりました。今後ももしよろしければご指導の程、 何卒、宜しくお願い致します。

関連するQ&A

  • Access VBA  複数検索方法(初心者)  

    下記の様に検索すると、 "テキスト名称"と"テキスト分類"の2つのテキストボックスを使用して検索ですが、 1つのテキストボックス"テキストA"で両方(名称・分類)又は2つ以上を検索させるには、どのようにしたら良いでしょうか? <テキストボックス1つでテーブル全部を検索したい> ご教授お願い致します。(Access2000) Private Sub コマンド17_Click() Dim st As String If Not IsNull(Me.テキスト名称) Then st = st & " AND 名称 like'*" & Me.テキスト名称 & "*'" End If If Not IsNull(Me.テキスト分類) Then st = st & " AND 分類 like '*" & Me.テキスト分類 & "*'" End If st = Mid(st, 6) DoCmd.OpenReport "レポート", acViewPreview, , st End Sub

  • Access2003 入力フォームの表示検索について

    フォームに非連結のボックスを作成し、以下のようなコードを追加し検索用に作成したのですが、 これが不味いのか、稀にデータの修正を行うと違うデータがTabキーもしくは矢印キーの移動で変わってしまいます。 例: ID1 店名 A店 住所 A県 代表者 A様 このデータの店名ボックスの店名をB店に変え、Tabや矢印で 次のボックスに移動すると、 ID1 店名 B店 住所 C県 のように関係ないデータが表示され、さらに移動すると 代表者 C様 と別のデータが移動するごとに表示されてしまいます。 (関係の無い別のIDデータが表示される。) なぜこのようなことが起きるのでしょうか? もし分かる方回答のほどお願いします。 企業コード(検索するフィールド) テキスト_ID検索(ボックス名) Private Sub テキスト_ID検索_AfterUpdate() Dim rs As DAO.Recordset If IsNumeric(Me.テキスト_ID検索) Then Set rs = Me.RecordsetClone rs.FindFirst "企業コード=" & Me.テキスト_ID検索 If rs.NoMatch Then '番号が見付からなかった場合の処理 MsgBox "データが見付かりません。" Else Me.Bookmark = rs.Bookmark End If rs.Close End If End Sub

  • ACCESS  日付が変わった場所で改ページしたい

    Win 7 Access2013 大変、お世話になっています。よろしくお願いしたいと思います。 日程表で、詳細に「日付」「場所」「時間」「内容」などのフィールドがありA5の用紙に印字しています。1枚の用紙に収まらない場合、2枚目に順次印字されています。 この2枚目に移る時、「日付」が変わった時点で改ページをしたいのです。「日付」は日が変わった時だけ入力しています。 色々、調べてみて、グループ化もしてみましたがうまく出来ませんでした。「グループ化」の中で、印字の時の「グループ全体」という項目が Access2013では見当たりませんでした。 何卒、ご教示方よろしくお願いいたします。 【備考】 モジュールには、ここでご教示いただいた下記のような「線」の記述をしています。 Option Compare Database Option Explicit Dim HI As String Dim TI As String Dim NAIYO As String Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) HI = """" TI = """" NAIYO = """" End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If HI <> Me.行程_日付 Then Me.直線51.Visible = True HI = Me.行程_日付 Else Me.直線51.Visible = False End If If TI <> Me.テキスト44 Then Me.直線53.Visible = True TI = Me.テキスト44 Else Me.直線53.Visible = False End If If NAIYO <> Me.内容 Then Me.直線55.Visible = True NAIYO = Me.内容 Else Me.直線55.Visible = False End If End Sub Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Me.ScaleMode = 1 Me.ForeColor = 0 Me.DrawStyle = 0 Me.DrawWidth = 4 Me.Line (1.51 * 567, 0)-(1.51 * 567, 14400) Me.Line (6.8 * 567, 0)-(6.8 * 567, 14400) Me.Line (8.3 * 567, 0)-(8.3 * 567, 14440) End Sub

  • マクロ 修正 (初心者です)

    Option Explicit Private lastRow As Long Private Index As Integer Private Sub CommandButton1_Click() Unload Me End Sub Private Sub あいまいボタン_Click() Dim last As Long If 検索名前テキストボックス.Text = "" Then MsgBox "あいまい抽出する名前を入力してください。" Exit Sub End If last = Range("A500").End(xlUp).Row Range("A2:D" & last).AutoFilter Field:=2, Criteria1:="=*" & 検索名前テキストボックス.Text & "*" End Sub Private Sub UserForm_Activate() Dim i As Long lastRow = Worksheets("顧客情報").Cells(Rows.Count, 1).End(xlUp).Row + 1 If lastRow <= 3 Then Exit Sub End If For i = 4 To lastRow 名前リストボックス.AddItem Cells(i, 2) Next End Sub Private Sub 検索ボタン_Click() Dim searchName As String searchName = 検索名前テキストボックス.Text If searchName = "" Then MsgBox "検索する名前を入力してください。" Else Dim i As Long Dim no As Long For i = 0 To 名前リストボックス.ListCount - 1 If 名前リストボックス.List(i) = searchName Then no = i 名前リストボックス.ListIndex = no Exit For ElseIf i >= 名前リストボックス.ListCount - 1 Then MsgBox "該当なし。" Exit For End If Next Index = no + 3 Rows(Index).Select End If End Sub B列に名前を入力しています B3から検索してくれるマクロを作成しました(インターネット見ながら) 別の検索も作りたくてどこをいじればいいのかわからず書き込みました G3列(住所を検索)から下側を検索したいのですがどこをいじればいいでしょうか?

  • アクセスIfブロックに対応するEnd Ifエラ-

    こんにちは。 アクセスで各レコードの印刷部数がそれぞれ異なるため、各レコードに入力した(フォームから)部数指定で 看板を印刷するようVBAを入力したところ。。。フォーマット時の方でIfブロックに対する End Ifがありませんとコンパイルエラーが出てEnD Ifが反転しています。 VBA初心者で、このVBA事態もネットで調べてコピペしたもので。。。エラー事態を自力で直せません。。。宜しくお願いいたします。 レポートの詳細にテキストボックスを置き名前-[cut]/可視-[いいえ[/コントロールソース-[=1]/ 集計実行-[グループ全体] 詳細のプロパティ Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Dim 指定枚数 As Integer 指定枚数 = Forms![フォーム名]![部数指定フィールド名] If IsNull([cut]) Then [cut] = 1 If [cut] <> 指定枚数 Then Me.NextRecord = False Me.MoveLayout = True Me.PrintSection = True End If End Sub Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Dim 指定枚数 As Integer 指定枚数 = Forms![フォーム名]![部数指定フィールド名] If [cut] <> 指定枚数 Then [cut] = [cut] + 1 Else: [cut] = 1 End If End Sub 宜しくお願いいたします。

  • Access 97 VBAについて

    Access VBAについて教えてください。 初心者ですが、レポートに表示されるテキストボックスの”項目名”と”内容”プロパティーに重複データ非表示にしています。そして、非表示となった部分に”〃”を表示するため別のテキストボックス、”隠しオブジェクト1”及び”隠しオブジェクト2”を配置しています。???にどんな記述が必要かわかりません。”項目名”だけであれば問題なく表示されるのですが”内容”についても同様に処理したいのです。 どうぞ宜しくお願いいたします。 Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)   If Me.項目名 = varA Then    Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 End Sub

  • アクセスのフォームで10件づつ表示する。

    初めて書き込みさせて頂きます。 アクセスのテーブルを帳票形式にて作成して10件づつ表示をさせようとすると一部のデータが表示されません。 方法としては、帳票形式で10件のみ表示出来る様にサイズを調整して「前へ」と「次へ」のボタンをつけて10件づつ表示させています。 ソースは下記の方法で 「次へ」 Private Sub コマンド13_Click() Dim rs As DAO.Recordset, i As Integer Const n As Integer = 10 Set rs = Me.RecordsetClone For i = 1 To n * 2 If rs.EOF Then rs.MoveLast Me.Bookmark = rs.Bookmark Exit Sub End If rs.MoveNext Next Me.Bookmark = rs.Bookmark For i = 1 To n rs.MovePrevious Next Me.Bookmark = rs.Bookmark rs.Close End Sub 「前へ」 Private Sub コマンド16_Click() Dim rs As DAO.Recordset, i As Integer Const n As Integer = 10 Set rs = Me.RecordsetClone For i = 1 To n * 2 If rs.BOF Then rs.MoveFirst Me.Bookmark = rs.Bookmark Exit Sub End If rs.MovePrevious Next Me.Bookmark = rs.Bookmark For i = 1 To n rs.MoveNext Next Me.Bookmark = rs.Bookmark rs.Close End Sub 以上、ご教授の程宜しくお願い致します。

  • アクセスレポートのグループごとのページ付番について

     Accessレポートのグループごとにおける、ページ付番についてお聞きします。  私なりにインターネットで調べて、下記モジュールを記述しました。レポートの状況は、次のとおりです。 ①グループ化している項目は「全体管理番号」で、ページはページフッターに「GPページ数」名のテキストボックスに表示しています。 ②「Pages」を参照するテキストボックス(コントロールソース =[Pages])を「総ページ取得」名で、ページフッターに非表示配置しています。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ Option Compare Database Dim d As Object Dim brk As Variant ------------------------------------------------------------------------------- Private Sub Report_Open(Cancel As Integer) Set d = CreateObject("scripting.dictionary") End Sub ------------------------------------------------------------------------------- Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer) If Me.全体管理番号.Value <> brk Then Me.Page = 1 brk = Me.全体管理番号.Value End If If Me.Pages > 0 Then Me.GPページ数 = Me.Page & "/" & d(Me.全体管理番号.Value) & "ページ"  End If End Sub ------------------------------------------------------------------------------- Private Sub 全体管理番号_フッター_Format(Cancel As Integer, FormatCount As Integer) If Me.Pages = 0 Then    d(Me.全体管理番号.Value) = Me.Page End If End Sub -------------------------------------------------------------------------------  この内容で印刷プレビューをした結果、複数ページになる場合は正しく表示になるのですが、複数ページにならない1ページのみの場合はなぜか「1/5ページ」や「「1/3ページ」となり、「1/1ページ」となりません。  「1/1ページ」表示となるようにするには、どこを修正すれば良いかお教え願いたいと思います。 どうぞよろしくお願いいたします。

  • PickFolder アウトルックとアクセス連携

    アクセスのフォームに テキストボックスとコマンドボタンを置きました。 VBAでoutlookに参照設定をして、 Private Sub コマンド2_Click() Dim myNaSp As NameSpace Set myNaSp = GetNamespace("MAPI") Me.テキスト0.Value = myNaSp.PickFolder Set myNaSp = Nothing End Sub としました。 テキストボックスには、 Private Sub テキスト0_AfterUpdate() MsgBox Me.テキスト0.Value End Sub としました。 しかしoutlookのフォルダ名をPickFolderでテキストボックスに入れても テキストボックスの更新後処理のイベントは発動しません。 しかしテキストボックスにはちゃんとフォルダ名が入っています。 Private Sub テキスト0_Change() MsgBox Me.テキスト0.Value End Sub にしても同じです。 Private Sub コマンド2_Click() Me.テキスト0.Value = "aaa" End Sub にしてコマンドボタンをクリックすると、 Private Sub テキスト0_Change() MsgBox Me.テキスト0.Value End Sub は、発動します。 PickFolderでフォルダ名を選択して値をテキストボックスに入れても イベントを発動させる方法を教えてください。

  • アクセス フォームのテキストボックス内の文字列

    お世話になります。 アクセス使い始めて1ヶ月ぐらいの初心者です。 アクセスのフォーム1に、ファイル参照ボタンを作って フォーム1にテキストボックスも作り、参照ボタンで選んだ path?をテキストボックスに入るようにしました。 次にそのテキストボックスに入ったpathを利用して、外部からテキストファイルを インポートしたいのですが、 インポートボタンを作って、ボタンを押したらテキストボックスに参照して入ってるpathを 取得してインポートできるようにしたいのですが、、、 知恵をお貸しいただけたら嬉しいです。 今作ったのは Private Sub コマンド44_Click() Dim objFileDialog As Object 'FileDialog Dim stTitle As String 'タイトル Dim stPath As String 'ファイルパス Dim stInitialFileName As String '初期ファイルパス If Me.chk.Value = -1 Then stTitle = "ファイル参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFilePicker) Else Const msoFileDialogFolderPicker = 4 'フォルダの参照 stTitle = "フォルダ参照" '★ stInitialFileName = "C:\Test\" '★ Set objFileDialog = _ Application.FileDialog(msoFileDialogFolderPicker) End If With objFileDialog 'ダイアログボックスのタイトル .Title = stTitle '初期フォルダパス .InitialFileName = stInitialFileName If .Show = False Then 'キャンセル時 GoTo Exit_SUB Else '★選択時フォルダパス表示 stPath = .SelectedItems(1) Me.テキスト45.Value = stPath End If End With Exit_SUB: Set objFileDialog = Nothing End Sub とゆう感じでテキストボックス45に入ったpathを利用してインポートしたいのです、 文章が読みにくくて申し訳ないです、 よろしくおねがいします。