• ベストアンサー

抽出後にすべて表示

こんにちわ。教えて下さい。VBAに関しては初心者です。。。 今下記のコードによって、抽出をしていますが、これを コマンドボタンをクリックすることによって、すべて表示させたいと 思っています。いろいろ調べましたが、オートフィルタから全てを 表示するのはできるのですが、オートフィルタの設定をしていないので、すべて表示ができません。 どのようにすればいいか、教えていただけますでしょうか。。。 Private Sub CommandButton1_Click() Call 検索 Unload Me End Sub Private Sub UserForm_Initialize() 'A列 作業項目をComboBox1 へ登録 Dim i As Long With Sheets("リスト1") i = .Cells(.Rows.Count, "a").End(xlUp).Row ComboBox1.List = .Range("A2:A" & i).Value End With End Sub Sub 検索() Dim i&, j&, F As Boolean, tmp Dim n As Integer With Sheets("シート") tmp = .Cells(1, 1).CurrentRegion.Value For i = 4 To UBound(tmp) For j = 4 To UBound(tmp, 2) Step 6 If tmp(i, j) = ComboBox1.Value Then F = True Exit For End If Next If F = False Then .Rows(i).Hidden = True F = False Next End With End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

何をしたいのか判からない。初心者は、文章で何をしたい、と言うことを適切に表現して、回答で色んなやり方に接するのがよかろう。 それでは丸投げ質問になるので、自分の失敗作を最後に出しておくとか。 ーー 最初からの質問者の処理の構想が適切かどうか。エクセルとエクセルVBAのコードのスキルを少し広く判かってないと、自分の思いつきの袋小路のなかで、姑息な・複雑なやり方をする場合が多々見受けられる。 >、オートフィルタから全てを表示するのはできるのですが むしろ通常はコンボアイテム全部表示、ボタンクリックで、条件で 限定表示では。 条件も2段(2個の)コンボの1つで選び、2つめはその選択された条件でアイテムを表示、などのパターンが良くある。 東京を選んだら、もうひとつのコンボに23区、武蔵野市、三鷹市・・が出て、神奈川県が選ばれると、横浜市。相模原市、横須賀市 ・・が出るような例。 そんなのではないの。 こういうのはアクセスなどのSQLを使えるソフトでないと、やりにくい。 ーー エクセルのコンボに限り、アイテムの値が、RowSourceでセル範囲で設定できる。 その範囲をフィルタすることによって、コンボのアイテムを変動させようとするのは、やってみるが、操作する場所が違うので、面食らうのでは。 いまやって見るとシート上でデーターフィルタでフィルタしても コンボのアイテムは全項目表示された。 ボタンを押すとフィルタのプログラムが実行され、条件は一定(1つ)なら、全て表示をVBAで発行すればよいかと思う。 いまやって見ると、手操作でフィルタをやってもコンボのアイテムは 絞られないので、VBAでやっても同じだろう。 ーー コマンドボタンを押したとき、コンボのアイテムを再設定しないとダメだろう。 その際フィルタ後の行を取得は http://www.k1simplify.com/vba/tipsleaf/autofilter.html のコードが参考になるだろう。 ーー 全データ表示は(下記 DB.ShowAllData) Sub test01() Dim DB As Worksheet Dim FilterRow As Range Set DB = Worksheets("Sheet3") 'オートフィルタが設定されているかどうか判断する If DB.AutoFilterMode Then DB.ShowAllData DB.AutoFilterMode = False End If End Sub

etsu28
質問者

お礼

言葉足らずですみません。。。 AutFilterModeのやり方でやってみて、駄目だったので、 どれを使えばいいのかわかりませんでした。 いろいろやってみて、Hiddenを使ったら、出来ました。 ありがとうございました。 以後気をつけたいと思います。。。

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

何をしたいのか良くわからないのですが 提示されたコード(検索)は 4,10,16、...列目にComboBox1と一致するものがある行は残してそれ以外の行を非表示にしたい という風に見えます。 後のほうのIFにEnd IF が無いのでエラーになるでしょう。 そこを修正して、データの例を示してどこがおかしいか(意図どおりでない)を記述してください。

etsu28
質問者

お礼

rivoisuさんありがとうございます。 いろいろやって、Hiddenを使って出来るようになりました。

関連するQ&A

専門家に質問してみよう