[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フィルタオプションの設定をマクロで使いたい』(のらウサギ)
はじめまして。マクロを勉強してまだ3ヶ月の、のらウサギといいます。
今、保存してあるデーターベースから「フィルタオプションの設定」をつかって条件を選択し
て抽出し、ブックへ貼り付け表示というマクロを参考書やHPを見ながら作成してますが、
セル範囲を指定するところでつまずいてます。
表示するブックより検索条件設定 ↓ データーベースのブックを開く ↓ 表示するブックで設定した条件を使い、フィルタオプションの設定でデーターベースの データーを検索 ↓ 検索されたデーターを表示するブックへコピペ
という作業なんですが「フィルタオプションの設定」の検索条件範囲を
日付 作業名 担当 作業コード 1 2004/5/5 佐藤 2 パトロール 004 3 後藤 4 2004/5/7 部品整理
で指定するのですが行数が変化するので、最終行取得し範囲設定をさせたいのですが
shita = Workbooks("条件.xls").Sheets("条件").Range("a1").CurrentRegion.Rows.Count shita2 = Workbooks("data.xls").Sheets("data").Range("a1").CurrentRegion.Rows.Count
Sheets("data").Range(Cells(1, 1), Cells(shita2, 13)).Select Sheets("data").Range(Cells(1, 1), Cells(shita2, 13)).AdvancedFilterAction:=xlFilterInPlace, CriteriaRange:= _ Workbooks("条件.xls").Sheets("条件").Range(Cells(1, 1), Cells(shita, 6)), Unique:=True
で実行させるとWorkbooks("条件.xls").Sheets("条件").Range(Cells(1, 1), Cells(shita, 6))のとこでつまづいてしまいます。
この場合どのようにしたらよろしいんでしょうか?
原因はRangeプロパティの中で親オブジェクトの記述のないCellsプロパティを使用 していることにあります。 Workbooks("data.xls")がアクティブな状態でマクロを実行していると思いますが、 Workbooks("条件.xls").Sheets("条件").Range(Cells(1, 1), Cells(shita, 6)) この部分のRange(Cells(1, 1), Cells(shita, 6))の使い方が不正です。 Workbooks("条件.xls").Sheets("条件")でRangeプロパティの取得を行おうとしていますが、 Cells(1, 1)、Cells(shita, 6)は親オブジェクトを記述していないために アクティブなシート、つまり、Workbooks("data.xls").Sheets("data")の Cellsプロパティの取得しに行こうとします。 違うシートのRangeオブジェクトをそれぞれ取得しに行くわけですから、 VBAが戸惑う(?)ワケです。したがって、
Workbooks("条件.xls").Sheets("条件").Range(Workbooks("条件.xls").Sheets("条件").Cells(1, 1), Workbooks("条件.xls").Sheets("条件").Cells(shita, 6))
というふうにRangeプロパティの引数のRangeオブジェクトに長々と同じ親オブジェクトを 正確に記述していかなければなりません。 これではちょっと見た目が悪いので、先にRangeオブジェクトを変数に格納して 記述するとすっきりします。
shita = Workbooks("条件.xls").Sheets("条件").Range("a1").CurrentRegion.Rows.Count shita2 = Workbooks("data.xls").Sheets("data").Range("a1").CurrentRegion.Rows.Count
With Workbooks("条件.xls").Sheets("条件") Set 条件 = .Range(.Cells(1, 1), .Cells(shita, 6)) End With
Sheets("data").Range(Cells(1, 1), Cells(shita2, 13)).Select Sheets("data").Range(Cells(1, 1), Cells(shita2, 13)).AdvancedFilter _ Action:=xlFilterInPlace, _ CriteriaRange:=条件, _ Unique:=True (KAMIYA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.