- ベストアンサー
コンボボックスの入力表示の消去
- 検索ボックスで検索した値を合致フォームで開く際、コンボボックスの値(入力表示)もクリアしたい
- 現在はマクロを使用してコマンドボタンでフォームを開いているが、コードビルダで記述するスキルがないため、マクロでの方法を教えてほしい
- もしマクロが使えない場合は、コードビルダでの方法を教えてほしい。勉強しますのでお願いします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>アクションで値の代入を2個以上作るのでしょうか。 >1つの値の代入のアクションで対応できる方法はあるのでしょうか。 普段マクロは使ってないのですが、恐らく前者でやるしか ないと思います。 ただ、アクションをコピペできるようですので、現在設定してある アクションを右クリック⇒コピー で、そのまま右クリック⇒貼り付け してみて下さい。で、コンボボックス名を2つ目のものに変更すれば よいです。
その他の回答 (4)
- naoto0216
- ベストアンサー率46% (183/391)
#2です。 マクロでクリアしたい場合、開くボタンのクリック時の箇所で マクロビルダーを起動します。 そうするとメニューに「すべてのアクションを表示」とあるかと 思いますが、そこを押します。 次に新しいアクションの追加で「値の代入」を選択します。 ※「値の代入」はセキュリティ上、デフォルトで非表示になって いるようなので、「すべて・・・」を押して表示させる必要有り。 アイテムに「検索ボックス」 式にNullもしくは"" とします。 それでいけると思います。
補足
ありがとうございます。早速やってみましたところ上手く生きました。もう一つお尋ねしたいのですが、コンボボックスが2個以上の絞込検索の場合、アクションで値の代入を2個以上作るのでしょうか。1つの値の代入のアクションで対応できる方法はあるのでしょうか。
- naoto0216
- ベストアンサー率46% (183/391)
#2です。 失礼しました。 合致フォームを開く部分はマクロで出来てるんですよね。 先ほど回答したのは、検索ボックスをクリアするのみです。
- naoto0216
- ベストアンサー率46% (183/391)
「コマンドボタンが押されたときに検索ボックスをクリアする」 ってことなので、コードが書けなくても、どこにどのようなコードを 書けばよいかは分かりますよね? まず、「開くボタン」のイベントで「クリックされたとき」にコードを 書くことになります。 「開くボタン」のプロパティを開いて、イベントタブに「クリックされた とき」って項目があると思いますが、そこでコードビルダーを 開きます。 そうすると、 Private Sub 開くボタン_Click() End Sub と出てくると思います。 そこに検索ボックスをクリアするように書けばいいだけです。 Forms![フォーム]![検索ボックス]=Null ※フォームの箇所は検索ボックスのあるフォーム名です。 Private Sub 開くボタン_Click() Forms![フォーム]![検索ボックス]=Null End Sub 単純に開くボタンが押されたときに、検索ボックスにNullを 入れてるだけです。
お礼
ありがとうございます。分かりやすく説明いただき感謝いたします。合致フォームを開いたとき、元の検索用フォームを最小化する設定にしておりまして、実に面倒なことをしている関係から、マクロから離れられない状況です。マクロを設定した時の記述の確認方法がわかりましたので、少しづつ勉強したいと思います。ありがとうございました。
申し訳ないんですけど、マクロって触ったことないんです。 マクロでの解決方法を教えてくれる人がいなければ、下のプロシージャを参考にしてください。 なお、コンボボックスの値をどのフィールドから探すのかわからないので、そのフィールドの名前をFieldとしてあります(DoCmdの行)。 Private Sub 開くボタン_Click() Dim FindKey As String FindKey = Me![検索ボックス] Me![検索ボックス] = "" DoCmd.OpenForm "合致フォーム", , , "Field='" & FindKey & "'" End Sub Private Sub 開くボタン_Click() これはコードビルダを選べば勝手にVBAのモジュールにかかれるはずです。 開くボタンコントロールのクリックイベントのプロシージャだよ、という意味です。 Dim FindKey As String これは変数の定義です。検索ボックス内の値を格納します。文字列型の変数としました。検索ボックスに入力する値が文字列でなければ、適切な型にするか、Variant型としてください。 まぁ、この行を省いて、変数の定義をしなくても走るはずですけど。 FindKey = Me![検索ボックス] 検索ボックス内の値をFindKeyという名前の変数に一時的に格納します。Meというのは自分のいるフォームのことです。Me![検索ボックス]は自分のいるフォームの上の検索ボックスという名のコントロール(ここではコンボボックス)を参照するということです。 Me![検索ボックス] = "" 検索ボックスの値を長さ0の文字列にします。これで入力した値が消えます。 DoCmd.OpenForm "合致フォーム", , , "Field='" & FindKey & "'" DoCmd.OpenForm "合致フォーム"は合致フォームというフォームを開けという命令です。三つカンマをうった後に検索条件を記述します。基本的な書き方は"Field='へのへのもへじ'"です。文字列で検索する場合には検索語をアボストロフィ(')でくくります。 今の場合は検索語がFindKeyという変数に格納されていますから、「へのへのもへじ」の代わりにFindKeyを入れます。&でつなぐことによって、"Field='(FindKeyの値)'"という文字列をVBAが内部で作ってくれます。 ではでは。
お礼
ありがとうございます。分かりやすく解説いただき感謝いたします。合致フォームを開いたとき、元の検索用フォームを最小化する設定にしておりまして、実に面倒なことをしている関係から、マクロから離れられない状況です。尚、コードで書いた方が柔軟に対応できそうなことが分かりました。少しづつ勉強したいと思います。ありがとうございました。
お礼
ありがとうございます。早速試してみましたところ上手く行きました。このまま使用を続けたいと思います。ありがとう。