🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

2回答

8122閲覧

Accessで検索フォームに全クリアボタンを配置したい

kozica

総合スコア58

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/09/13 01:46

編集2019/09/13 02:06

Accessにてテーブルから帳票フォームの検索フォームでレコード検索するようにしました。
検索フォームはフォームヘッダーに検索項目、検索ボタン、クリアボタンを設置し、詳細フォームに抽出レコードが表示されます。

検索項目にはテキストボックス、チェックボックス(2択)、リストボックス 、コンボボックスを配置しています。

「クリア」ボタンも下記コードにしていますが、一つだけ問題があります。
チェックボックスを2つ選択状態で「クリア」を押すと、クリアされない問題があります。
(例:性別:男性、女性)
1択のみ選択状態で「クリア」ボタンを押すと正常に動きます。
なぜか2択選択状態の時のみクリアがされないです。

どうかお力を貸してください。

vba

1Private Sub clear_Click() 2 Dim I As Long 3 Dim myObj As Object 4 5 For Each myObj in Me 6 If myObj.Name like "txt*" Then 7 myObj.Value = "" 8 End If 9 10 If myObj.Name like "check*" Then 11 myObj.Value = False 12 End If 13 14 If myObj.Name like "combo*" Then 15 myObj.Value = "" 16 End If 17 Next 18 19 For i = 0 To Me.listAge.ListCount - 1 20 listAge.Selected(i) = False 21 Next 22 23 Me.Filter = False 24End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

フォームのレコードソースの性別フィールドの設定はどうなってますか。

例えは、
フィールド名 性別
データ型 Yes/No型
で、True が男性、Falseが女性ということですか。

検索(抽出)用のチェックボックスはどうなってますか。
check性別 と一つですか。
それとも
check男性、check女性
と2つあるのですか。

その辺の状況の詳細を質問に追記してください。

ちなみに、コントロールの種類で処理を分ける場合は、下記のようなコードにするといいですよ。

vba

1 2Private Sub clear_Click() 3 Dim ctl As Control 4 5 For Each ctl In Me.Controls 6 Select Case ctl.ControlType 7 Case acTextBox, acComboBox 8 ctl.Value = Null 9 Case acCheckBox 10 ctl.Value = False '仕様が不明瞭なのでとりあえず 11 End Select 12 Next 13End Sub

投稿2019/09/13 04:42

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

チェックボックスのvalueはトリプルステートでない場合は、True/Falseです。
ですので、以下の様にしてみてください。

VBA

1 If myObj.Name like "check*" Then 2 myObj.Value = False 3 End If

投稿2019/09/13 01:58

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozica

2019/09/13 02:07 編集

すいません記載ミスでした。(修正します) 「NULL」ではなく「False」として記載している問題が発生しています。 「NULL」だとクリアを正常にされます。 「NULL」だとチェックボックス が黒塗りされてしまうので「False」にしたいです。 「NULL」で黒塗りされない方法があるのであればそれでも構いません。」 おそらく「False」時で検索をかけて2択の両方に一致するレコード出力でクリアされていないのでは?と推測しています
sazi

2019/09/13 02:23

True/False/Nullという状態があるならそれはトリプルステートですね。 チェックボックスの形状がそのようになるのは仕様です。 検索におけるチェックボックスでNullを使用する場合は、条件指定なしの場合だと思いますので、captionを連動させて分かり易くしてはどうでしょうか(例:男、女、指定なし)
sazi

2019/09/13 03:06 編集

性別のように何れかのみを選択するものなら、オプショングループとしてオプショングループをNullに設定すれば良い気もします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問