• 締切済み

【至急】VBAについて

現在エクセル2003を使用しています。 VBA初心者です。 -----エクセルの現在の状態----- ・A5からL5までに項目の名称が書いてあります。 (A5に”見積番号” B6に”件名” などと記入されています。) ・データはA6からL5まで記入され下方向にデータは増えて行きます。 (データは見積を完成させるごとに下に増えて行きます。) ・見積番号と件名で検索をかけたいので、一つ組んだものがあります。 Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub これです。所謂Ctrl+Fで使用する検索のコードとほぼ同じかと思われます。 ですが、これでは事足りないと上司に言われ質問致しました。 -----今回出来ない部分に関して----- Range("A6:L6").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal End Sub こちらのコードを使用すると、きちんと検索はされます。 ですが、オートフィルタの様に 例えば件名のところを絞ると データも同じ件名のものだけを抽出し表示さる様にしてほしいとの事でした。 エクセル内にボタンを作成し、クリックすると検索窓を出現させ条件を記入したら そのエクセルのシート内にその条件と合ったデータを抽出したものを作成したいのです… ※簡単に言うと Ctrl + Fの機能とオートフィルタを開くとオートフィルタオプションの検索窓が 出現しますよね。 それをマクロで組みたいと言った方が分かりやすいでしょうか…?? レスポンスはなるべく早く致します。 皆様の知識をお借りできればと思い 質問させて頂きました。 以上、宜しくお願い致します。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2です。 補足に >A列も検索をかけたいのです… とありますが、同じ見積番号が複数存在するというコトでしょうか? まぁ~それはさておき、A列が見積番号に限らす。A列とB列で検索を掛ける方法です。 Sub フィルタ2() Dim str1 As String, str2 As String str1 = InputBox("見積番号を入力") str2 = InputBox("件名を入力") With Range("A5") .AutoFilter Field:=1, Criteria1:=str1 .AutoFilter Field:=2, Criteria1:=str2 End With End Sub こんな感じではどうでしょうか?m(_ _)m

  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.3

見積もり番号って重複してないものじゃないかと思うのですが・・・。 としたら、前の人のをコピペして直すだけ。 あとボタンをもう一つ増やす(見積もり番号用)。 ((アンド条件で探したかったならごめんなさい)) Sub フィルタ() Dim str As String str = InputBox("見積もり番号を入力") Range("A5").AutoFilter field:=1, Criteria1:=str End Sub

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! No.1さんが仰っているように 前半のコードはA列の昇順で並び替えているだけですね! 質問はB列の「件名」でフィルタをかけたい!というコトでしょうか? 手作業でやるのが一番簡単だと思いますが、 >オートフィルタオプションの検索窓が 出現しますよね。 インプットボックスにB列の件名を入力するようにしてみました。 ついでに、フィルタ解除のコードも載せてみます。 ごくごく単純にやってみました。 Sub フィルタ() Dim str As String str = InputBox("検索したい件名を入力") Range("A5").AutoFilter field:=2, Criteria1:=str End Sub Sub フィルタ解除() ActiveSheet.AutoFilterMode = False End Sub ※ 4行目に何らかのデータがA~L列まで入力してある場合5行目の項目行が非表示になってしまいます。 その場合は >Range("A5") の部分を >Rows(5) に変更してみてください。 この程度で良いのでしょうか?m(_ _)m

lisa3876
質問者

お礼

凄い!出来ました!有難う御座います。 分かりにくい文章で本当に申訳ありませんでした…

lisa3876
質問者

補足

ちなみにもう一点だけ質問させて下さい。 A列も検索をかけたいのです… そういう場合はどう組めば良いのでしょうか?

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

提示されたコードを見ると、検索ではなくA列の昇順での並べ替えをしているだけと思うのですが、ご希望の操作との関係が良くわかりません。 最終的にどのような結果を表示または抽出したいのか、例えば、検索条件がA1セルとB1セルにあり、そのデータを別シートに表示したいなど、もう少し具体的にご希望の操作を例示してください。

lisa3876
質問者

お礼

大変失礼致しました! ご指摘有難う御座いました。

関連するQ&A