[Excel VBA] セルの検索、オートフィルター<確認問題>

スポンサーリンク

今回は、Excel VBAでデータを探すときに使用する「セルの検索」、「オートフィルター」に関する理解度チェック問題です。
初・中級レベルの方向けの内容で、問題は5問あります。挑戦してみましょう。

【問題1】特定の値を検索して選択

次のコードを実行すると、どのセルが選択されますか?

(選択肢)

  1. シート上の最初に見つかった “100" のセルが選択される
  2. すべての “100" が選択される
  3. “100" が見つからない場合でもエラーにならない
  4. 1) と 3) の両方が正しい
正解:

4) 1) と 3) の両方が正しい
(解説)

  • .Find は最初に見つかったセルを返す。
  • “100" が見つからない場合、rng は Nothing になるため、エラーは発生しない。
  • .Cells ⇒ Cells(行, 列) の引数が省略されているので、すべてのセルが参照される。
  • Not rng Is Nothing ⇒ rng が Nothing では無い場合 →即ち、検索する語句が存在する場合は次の処理を実行する

【問題2】特定の値をすべて検索

シート内のすべての “合計" という値を含むセルを黄色にするコードを完成させてください。(下線箇所)

(選択肢)

  1. Nothing
  2. firstAddress
  3. “合計"
  4. rng.Value
正解:

2) firstAddress
(解説)

  • FindNext は .Find で見つかった次のセルを検索する。
  • 最後まで行くと最初のセルに戻る。戻ったら終了する ように Loop Until rng.Address = firstAddress とする。

【問題3】特定の値でフィルターを適用

次のコードを実行すると、どのような結果になりますか?

(選択肢)

  1. B列が「東京」の行のみが表示される
  2. A列が「東京」の行のみが表示される
  3. フィルターが適用されるが、すべての行が表示されたまま
  4. エラーが発生する
正解:

1) B列が「東京」の行のみが表示される
(解説)

  • Field:=2 は 2列目(B列) を基準にフィルターを適用する。
  • Criteria1:="東京" により、B列に「東京」とある行のみ表示される。

【問題4】フィルター(抽出)の解除

適用されているオートフィルター自体は解除せず全ての行を表示するには、どのコードが正しいですか?

(選択肢)

  1. ActiveSheet.AutoFilterMode = False
  2. ActiveSheet.ShowAllData
  3. ActiveSheet.AutoFilter.Remove
  4. ActiveSheet.Range(“A1").AutoFilter.Clear
正解:

2) ActiveSheet.ShowAllData
(解説)WorkSheet オブジェクト .ShowAllData メソッドを使用する。

  • ShowAllData はフィルターを解除し、すべての行を表示する。 ※注意)フィルターが掛かっていない状態で ShowAllData を実行するとエラーになる。
  • AutoFilterMode = False はオートフィルター自体を解除する。
  • オートフィルター自体の解除は Range(“A1").AutoFilter (引数を指定しない)のようにしても可能。

【問題5】オートフィルターの有無を判定

シートにオートフィルターが設定されているかどうかを判定し、設定されていなければ追加するコードを完成させてください。(下線箇所)

(選択紙)

  1. AutoFilterMode
  2. FilterMode
  3. HasFilter
  4. EnableFilter
正解:

1) AutoFilterMode
(解説)WorkSeet オブジェクト .AutoFilterMode プロパティ

  • AutoFilterMode は オートフィルターが適用されているかどうか を判定できる。
  • (2, 3行目)If・・・False なら、オートフィルターが設定されていないので Then・・・AutoFilter を適用する。
  • 注意)ActiveSheet.AutoFilterMode = True のようにしてもオートフィルターは適用できない。よって、追加するには上記サンプルコードのようにRange オブジェクト .AutoFilter メソッド を使う。

スポンサーリンク

確認・練習問題Excel,VBA

Posted by Nh