access2000のVBAで「直前の操作をキャンセル」

このQ&Aのポイント
  • access2000のVBAを使用して、フィルタ操作をプログラムしていますが、複数の条件を与えるとエラーメッセージが表示されます。
  • Me.Filter = vbNullStringの行を追加して、フィルタを初期化してから条件を追加してください。
  • 条件を与える前にMe.Filterを初期化することでエラーメッセージを回避できます。
回答を見る
  • ベストアンサー

access2000のVBAで「直前の操作をキャンセル」

こんにちわ。 いまaccess2000のVBAでフォームの元になるテーブルへの フィルタ操作をプログラムしています。 1つの条件を与えたときは正常にフィルタできるのですが, 下記のように2つの条件を与えると, 「直前の操作はキャンセルされました」という エラーメッセージが表示されてしまいます。 「 Me.Filter = vbNullString ' クリア Me.Filter = "[項目1]='" & Forms![F_フォーム1].[cmbコンボ1] & "'" Me.Filter = Me.Filter & " AND [項目2]='" & Forms![F_フォーム1].[cmbコンボ2] & "'" Me.FilterOn = True 」 何かコーディングが足りないのでしょうか? 教えてください。お願いします。

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

  • ベストアンサー
  • KAERU_VXV
  • ベストアンサー率60% (18/30)
回答No.1

上記、コードで試しにやってみましたが問題なく出来ましたよ。 テーブルの項目をテキスト型から数値型にしてみたら、「直前の操作はキャンセルされました」とメッセージが表示されました。 データ型があっていないかもしれませんね。

tatsurou
質問者

お礼

KAERU_VXVさん 回答ありがとうございます。 教えて頂いた方法でうまくできました。

関連するQ&A

  • Access VBA フィルター

    Microsoft Access のVBAで、メインフォームで条件を設定するとサブフォームがフィルターされて開くというVBAを作っています。 SQL文を「SQLCode」という文字列型変数に入れました。 具体的には以下の内容がSQLCodeに入っています。 [担当者]=[Forms]![検索]![担当者] この変数をフォームにフィルターをかけて開くコードに入れたいのですが、以下の?の部分を教えてください。 Me!Fサブフォーム.Form.Filter. = ? Me!Fサブフォーム.Form.FilterOn = True

  • Access2007 サブフォームでフィルタリングする方法

    お世話になっております。 フォーム上に関連性のないサブフォームがあります。 フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。 このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。 Me.FilterOn = True Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')" サブフォームでフィルタリングできる方法を教えていただければ幸いです。 よろしくお願いいたします。

  • vba 直前の操作はキャンセルされました

    <環境>ACCESS2000 サブフォーム(データシートビュー)の並び替えを、メインフォームのオプショングループの 更新後処理イベントで操作しようと思っています。 コーディングは以下の通りです。 並び替え自体はうまく動作するのですが、メインフォームで閉じるボタンを押すと 「直前の操作はキャンセルされました.」とエラーが出てしまいます。 サブフォームのプロパティを替えることが原因なのでしょうか? どなたか回避策をお願いします。 <メインフォーム開く時> Public Function 開くイベント() DoCmd.OpenForm "Fメイン" Set FM = Forms![Fメイン] Set FS = Forms![Fメイン]![SubForm].Form 'テーブル作成 strSQL = "CREATE TABLE AAA (" strSQL = strSQL & " [選択] [bit] NULL ," strSQL = strSQL & " [番号] [varchar] (7) NOT NULL ," strSQL = strSQL & " [カナ] [varchar] (20) NULL ," strSQL = strSQL & " PRIMARY KEY(番号))" db.Execute strSQL 'データ作成 strSQL = "INSERT INTO AAA" strSQL = strSQL & " SELECT" strSQL = strSQL & " [選択] = 1 ," strSQL = strSQL & " [番号] = [番号] ," strSQL = strSQL & " [カナ] = [カナ] " strSQL = strSQL & " FROM BBB" db.Execute strSQL FS.RecordSource = "SELECT * FROM AAA ORDER BY 番号" FM.Refresh End Function <オプショングループ更新後処理> Private Sub GRP_並び順_AfterUpdate() Select Case Me!GRP_並び順 Case 1 With Me![SubForm].Form .OrderBy = "番号" .OrderByOn = True End With Case 2 With Me![SubForm].Form .OrderBy = "カナ" .OrderByOn = True End With End Select End Sub

  • 複数条件のフィルタができない

    マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが Sub フィルタ() With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With End Sub だとうまくできません。 With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' or " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With これならフィルタされるのですが、 どちらかだけになってしまいます。 .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" の文法がおかしいのだと思うのですが、どこが変ですか?

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

  • Access filterにて

    フィルターする時、オプションボタンやトグルボタンを使用し、Select Caseで分岐させてフィルターするやり方でなく、下記のようにすることはできますか? ************************************************************** 「Me.検索項目」はコンボボックス(集合体ソースには、検索するフィールド名を用意) 「Me.日付入力」は日付だけを入力するテキストボックス Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.FilterOn = True ************************************************************** 検索するフィールド名をいちいち記述しなくて済むのでは?と思いましたが、結果が得られませんでした。 どこがおかしいのでしょうか?よろしくお願いします。

  • ACCESS VBA で複数項目検索にテキストボックスとコンボボックス

    ACCESS VBA で複数項目検索にテキストボックスとコンボボックスを使用したい txtPC番号というテキストボックス、 com所属部門というコンボボックス、 txt使用者というテキストボックスの どれかひとつの条件が入力されたときに 該当するフォームのレコードを抽出できるようにしたいのですが、 コンボボックスで選択した場合のみうまく抽出できません。 コードのどの部分に誤りがあるのでしょうか? ご指摘願えませんでしょうか? よろしくお願いいたします。 Private Sub cmd01_Click() Me.FilterOn = False If Me!txtPC番号 <> "" Then Me.Filter = "[PC番号]like '*" & Me!txtPC番号 & "*'" ElseIf Me!com所属部門 <> "" Then DoCmd.Requery "com所属部門" ElseIf Me!txt使用者 <> "" Then Me.Filter = "[使用者]like '*" & Me!txt使用者 & "*'" End If Me.FilterOn = True End Sub

  • 複数サブフォームで filteron=false

    Access+VBA です フォームに複数のサブフォームでそれぞれフィルタをかけます。 Me.Filter=fstr1 (他のサブフォームでは fstr2・・・・) Me.FilterOn=True 一方のフィルタを解除すると Me.FilterOn=False 他のサブフォームのフィルタも解除されてしまいます。 考えられる原因はなんでしょうか?

  • Access 2003 でフォームフィルターがかかりません。

    Access 2003 でフォームフィルターがかかりません。 どなたか助けてください。 アクセス初心者です。 フォームの詳細欄にチェックボックス(フィールド名:伝票チェック)を配置しております。 チェックの入っていないものを表示させたいです。 フォームヘッダーのオプショングループ(フレーム67)に オプションボタン0-オプション値0と オプションボタン2-オプション値2 の2個のオプションボタンを配置してあります。 クリック時のイベントプロシージャに以下のコードを書きました。 Private Sub フレーム67_Click() If Me!フレーム67 = 0 Then Me.Filter = 伝票チェック = 0 Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = True End If End Sub 実行時エラーは出ませんが、データが何も表示されません。 どうすればいいのでしょう??? どなたかお願いします。

  • 日付型と文字列型、両方にフィルタをするには

    アクセス フォームで日付型(Between and)と文字列型、両方にフィルタをするには? Private Sub cmd_ボタン1_Click() Me.Form.Filter = _ "日付 Between #" & Me.cmb_日付1.Value & "# And #" & Me.cmb_日付2.Value & "#" & _ " and 会社名 like " & "*" & Me.cmb_会社名.Value & "*" Me.Form.FilterOn = True End Sub これのどこが変なのか教えていただけますか? 実行時エラー3075「クエリ式の構文エラー:演算子がありません。」というエラーになります。

専門家に質問してみよう