Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


557 / 9994 ←次へ | 前へ→

【12747】Re:複数条件での抽出
回答  かるびの  - 15/3/21(土) 0:57 -

引用なし
パスワード
    些細な点をいくつか。

>If Not IsNull(cmb取引先) Then
 cmb取引先というコンボボックス名ですが、ハンガリアン記法と呼ばれる命名法ですね。
 これは、変数名やコントロール名に
変数のデータ型を示す接頭語やコントロールの種類を示す接頭語を付ける命名法です。
 コンボボックスの接頭語ですが、「cbo」の方がいいと思います。
 「cmb」だと、コマンドボタンを意味する「cmd」と見間違えやすいからです。
 ま、趣味の問題だから、どっちでもいいんですけどね。
 

>If Not IsNull(txt発地都道府県) Then
 Nullの場合だけを除外するのでいいのかなあ。
 txt発地都道府県の値が長さ0の文字列である場合にどうなるか考えてみてください。
 
 長さ0の文字列の場合にも対応しようというのであれば、Nz関数が使えると思います。

 もっとも、手入力では長さ0の文字列をテキストボックスには入力できないので、
そこまで心配する必要はないかもしれません。
 

 それから、「.Value」は省略しない方がいいと思います。
 最近のエクセルVBAについての掲示板を見ていると、このような指摘をときどき見かけます。
 省略すると、その分、コンピュータが補ってくれるわけですが、
コンピュータ内部で補うための処理が必要になるので、その分コードの実行が遅くなるらしいです。


>If Not IsNull(txt発地都道府県) Then
>strFilter = strFilter & " AND 発地都道府県 Like '*" & txt発地都道府県.Value & "*'"
>End If
 エクセルVBAの本に書いてあったのですが、
オブジェクトの参照というのは、VBAコードの中では時間がかかる処理なのだそうです。
 だから、オブジェクトの参照というのは、回数を減らした方がいいそうです。
 これがアクセスの場合にあてはまるかどうかわからないのですが、
同じVBAなので、多分アクセスの場合にもあてはまるのだろうと思います。

 上記コードでは、「If Not IsNull(txt発地都道府県)」でtxt発地都道府県を1回参照し、
「strFilter = strFilter & " AND 発地都道府県 Like '*" & txt発地都道府県.Value & "*'"」
でtxt発地都道府県をもう1回参照し、
結局計2回txt発地都道府県を参照することになります。
 txt発地都道府県の値を変数に受けるか、又はWithステートメントを使えば、
テキストボックスを参照する回数を1回にできます。

 ただし、使う変数を増やすと、その分のメモリー領域を要することになるため、
コードが遅くなると言われています。

 ちなみに私は、無駄に多くの変数を使っています。
 その方がコード内容を読み返したときに理解しやすいし、
デバッグのときにコードが返す値を確認しやすいからです。


>If Not IsNull(txt開始日) Then
 例えば、txt開始日の値が「2015/13/32」だとしたら、どうなるか考えてみてください。

 Nullじゃないから、このIf文は通ります。
 そうすると、この値を使った条件式がstrFilterに代入されます。
 でも、この値は日付ではないので、Filterプロパティへの代入ででエラーになります。

 IsDate関数を使うと、日付として使える文字列かどうかチェックできます。

1,119 hits

【12728】複数条件での抽出 木葉 15/3/13(金) 15:40 質問[未読]
【12729】Re:複数条件での抽出 木葉 15/3/13(金) 17:10 発言[未読]
【12730】Re:複数条件での抽出 かるびの 15/3/14(土) 0:46 回答[未読]
【12732】Re:複数条件での抽出 木葉 15/3/16(月) 16:34 発言[未読]
【12736】Re:複数条件での抽出 木葉 15/3/17(火) 16:25 質問[未読]
【12739】Re:複数条件での抽出 かるびの 15/3/18(水) 1:15 回答[未読]
【12740】Re:複数条件での抽出 木葉 15/3/18(水) 9:56 発言[未読]
【12742】Re:複数条件での抽出 木葉 15/3/18(水) 14:02 質問[未読]
【12744】Re:複数条件での抽出 かるびの 15/3/19(木) 0:52 回答[未読]
【12745】Re:複数条件での抽出 木葉 15/3/19(木) 9:54 発言[未読]
【12746】Re:複数条件での抽出 木葉 15/3/19(木) 10:02 お礼[未読]
【12747】Re:複数条件での抽出 かるびの 15/3/21(土) 0:57 回答[未読]
【12752】Re:複数条件での抽出 木葉 15/3/23(月) 14:33 質問[未読]
【12755】Re:複数条件での抽出 かるびの 15/3/24(火) 3:28 回答[未読]
【12757】Re:複数条件での抽出 木葉 15/3/24(火) 11:14 発言[未読]
【12759】Re:複数条件での抽出 木葉 15/3/24(火) 16:00 質問[未読]
【12763】Re:複数条件での抽出 かるびの 15/3/25(水) 0:54 回答[未読]
【12767】Re:複数条件での抽出 木葉 15/3/25(水) 11:19 質問[未読]
【12768】Re:複数条件での抽出 木葉 15/3/25(水) 11:24 発言[未読]
【12771】Re:複数条件での抽出 木葉 15/3/25(水) 15:13 質問[未読]
【12772】Re:複数条件での抽出 hatena 15/3/25(水) 16:04 回答[未読]
【12774】Re:複数条件での抽出 木葉 15/3/25(水) 17:21 お礼[未読]

557 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free