Excel VBA質問箱 IV

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

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


12430 / 13645 ツリー ←次へ | 前へ→

【10500】Filterの項目取得 evian 04/1/29(木) 18:45 質問
【10503】Re:Filterの項目取得 INA 04/1/29(木) 20:08 回答
【10510】Re:Filterの項目取得 evian 04/1/30(金) 11:36 質問
【10512】Re:Filterの項目取得 Jカーター 04/1/30(金) 11:58 回答
【10514】Re:Filterの項目取得 evian 04/1/30(金) 13:25 回答
【10516】Re:Filterの項目取得 Jカーター 04/1/30(金) 13:32 回答
【10519】Re:Filterの項目取得 evian 04/1/30(金) 13:54 回答
【10520】Re:Filterの項目取得 Jカーター 04/1/30(金) 14:01 回答
【10522】Re:Filterの項目取得 evian 04/1/30(金) 14:41 質問
【10523】Re:Filterの項目取得 Jカーター 04/1/30(金) 14:49 回答
【10526】Re:Filterの項目取得 evian 04/1/30(金) 15:13 お礼
【10533】Re:Filterの項目取得 kein 04/1/30(金) 16:41 発言

【10500】Filterの項目取得
質問  evian  - 04/1/29(木) 18:45 -

引用なし
パスワード
   はじめまして。
以下の問題で悩んでいます。
お力を貸していただければ幸いです。
(Win2000+Excel2000)

以下のようなフィルタが存在するとします。

Field1▼
-----------
(すべて)
(トップテン)
(オプション..)
    1
    2
    3

上記のAutoFilterを条件指定する場合、

  Selection.AutoFilter Field:=1, Criteria1:="2"

などと記述することができますが、
「Criteria1:=」の条件指定を、「"2"」とベタ書きするのではなく、
フィルタによって集計された項目から取得して、条件指定したいのです。

どなたか取得方法をご存知の方、ご教授ください。
よろしくお願い致します。

【10503】Re:Filterの項目取得
回答  INA  - 04/1/29(木) 20:08 -

引用なし
パスワード
   >フィルタによって集計された項目から取得して、条件指定したいのです。
フィルタするのに「フィルタによって集計された項目」という説明は
矛盾しているように思えますが?

【10510】Re:Filterの項目取得
質問  evian  - 04/1/30(金) 11:36 -

引用なし
パスワード
   INA さん、おはようございます。
回答が遅くなって申し訳ありません。

>フィルタするのに「フィルタによって集計された項目」という説明は
>矛盾しているように思えますが?
「フィルタによって集計された項目」というのは、フィルタをかける前の話です。
説明が下手で申し訳ありません。

再度説明しますと、
既にシート上にデータがある状態から、
[データ(D)]→[フィルタ(F)]→[オートフィルタ(F)]によって
オートフィルタを設定します。
(※オートフィルタを設定するデータの一覧には
  何が入力されているか分かりません。)

それによって
Ex.
>Field1▼
>-----------
>(すべて)
>(トップテン)
>(オプション..)
>    1
>    2
>    3
のようなドロップダウンリストが作成されると仮定します。

この後、マクロを使用してフィルタをかけたいのですが、
データ一覧の内容が分からない為、
オートフィルタによって集計された項目リストを使用して、
条件指定したいということです。

>Field1▼
>-----------
>(すべて)
>(トップテン)
>(オプション..)
>    1   ←???.Item(1)
>    2   ←???.Item(2)
>    3   ←???.Item(3)
みたいなのがあって、

   Selection.AutoFilter Field:=1, Criteria1:= [???.Item(1)]

ということがしたのですが、ご理解して頂けたでしょうか?
重ねて、宜しくお願い致します。

【10512】Re:Filterの項目取得
回答  Jカーター  - 04/1/30(金) 11:58 -

引用なし
パスワード
   ▼evian さん:
ダイアログを出す方法はどうでしょうか?
----------------------------------------------------------------
  Sheet1.Cells(1).AutoFilter
  Application.Dialogs(xlDialogFilter).Show 1

Showのあとの1がフィルタ範囲のFieldを表します。


意図と違ったらすいません。

【10514】Re:Filterの項目取得
回答  evian  - 04/1/30(金) 13:25 -

引用なし
パスワード
   ▼Jカーター さん:

>  Application.Dialogs(xlDialogFilter).Show 1
こんなことも出来るんですね。(知らなかった...)

でも、ダイアログを表示するのではなくて、
内部的にリストの項目を取得して条件指定したいのですが、
やはり無理なのでしょうか。。↓

【10516】Re:Filterの項目取得
回答  Jカーター  - 04/1/30(金) 13:32 -

引用なし
パスワード
   ▼evian さん:
>内部的にリストの項目を取得して条件指定したいのですが、
どこに取得したいのですか?

【10519】Re:Filterの項目取得
回答  evian  - 04/1/30(金) 13:54 -

引用なし
パスワード
   ▼Jカーター さん:
変数に一度代入するか、
存在するかどうか分からない.Itemを以下の位置に指定したいのです。

   Selection.AutoFilter Field:=1, Criteria1:= [???]←ここ

宜しくお願いします。

【10520】Re:Filterの項目取得
回答  Jカーター  - 04/1/30(金) 14:01 -

引用なし
パスワード
   ▼evian さん:
こんにちは。
>どこに
はそういう意味ではないのです。

使用者の立場で考えてみてください。

ドロップダウンのリストの内容からどれかを選ばせたいと言うことなら
フィルタを実行する前に
そのリストを使用者に見せて選ばせる動作が必要ではないのですか?
そういう意味での「どこに」なのです。

それとも
そのリストの使用目的は違うのですか?

【10522】Re:Filterの項目取得
質問  evian  - 04/1/30(金) 14:41 -

引用なし
パスワード
   ▼Jカーター さん:
何度もすみません。

>そのリストの使用目的は違うのですか?
そのとーりです。
ですよね。見えているものとして説明していたのですが、
実際はオートフィルタを設定しているシートは見せないようにします。

やりたいことは、
・複数グラフオブジェクトが並んだシートをユーザに見せます。
・オートフィルタが設定されたデータシートは見せないようにします。
・データシートに並ぶデータは、後から外部によって貼付られるものです。
 (その為フィルタのリスト項目には何が存在するのか分かりません。)

各グラフのデータ範囲を指定するのに、
便宜上、フィルタによって見えている部分だけを
  .SpecialCells(xlCellTypeVisible)
を使用して範囲指定しようと思っていたのです。
それで、フィルタをかけるときに条件指定する内容が
リスト項目から取れないものかと思案していたのです。
イメージとしてつかみ易いと思って、以下のように書いていました。
> Field1▼
> -----------
> (すべて)
> (トップテン)
> (オプション..)
>     1
>     2
>     3

何卒、よろしくお願い致します。

【10523】Re:Filterの項目取得
回答  Jカーター  - 04/1/30(金) 14:49 -

引用なし
パスワード
   ▼evian さん:
こんにちは。
ドロップダウンの中身を取ることは厳しいですね。
実は
使用目的を尋ねたのは別案を考えるためだったのです。

視点を変えて
単純に、重複無しのリストがほしいと言うことなら
Dictionaryを使えば結構簡単に配列に格納することはできるとおもいます。

【10526】Re:Filterの項目取得
お礼  evian  - 04/1/30(金) 15:13 -

引用なし
パスワード
   ▼Jカーター さん:
>視点を変えて
>単純に、重複無しのリストがほしいと言うことなら
>Dictionaryを使えば結構簡単に配列に格納することはできるとおもいます。

少し視点を変えたほうがよいのかもしれませんね。
Dictionaryを知らなかったので、考慮して方法を再検討してみます。
お付き合い頂いて、ありがとうございました。
今後ともよろしくお願いします。

【10533】Re:Filterの項目取得
発言  kein  - 04/1/30(金) 16:41 -

引用なし
パスワード
   重複なしの値を得るなら、AdvancedFilter も使えますね。

12430 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free