こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【至急】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の機能とオートフィルタを開くとオートフィルタオプションの検索窓が 出現しますよね。 それをマクロで組みたいと言った方が分かりやすいでしょうか…??

レスポンスはなるべく早く致します。
皆様の知識をお借りできればと思い 質問させて頂きました。
以上、宜しくお願い致します。

投稿日時 - 2013-11-13 09:37:41

QNo.8345454

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

投稿日時 - 2013-11-13 18:19:28

ANo.3

見積もり番号って重複してないものじゃないかと思うのですが・・・。
としたら、前の人のをコピペして直すだけ。
あとボタンをもう一つ増やす(見積もり番号用)。
((アンド条件で探したかったならごめんなさい))

Sub フィルタ()
Dim str As String
str = InputBox("見積もり番号を入力")
Range("A5").AutoFilter field:=1, Criteria1:=str
End Sub

投稿日時 - 2013-11-13 17:15:46

ANo.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

投稿日時 - 2013-11-13 14:15:45

補足

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

投稿日時 - 2013-11-13 16:18:43

お礼

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

投稿日時 - 2013-11-13 16:11:34

ANo.1

提示されたコードを見ると、検索ではなくA列の昇順での並べ替えをしているだけと思うのですが、ご希望の操作との関係が良くわかりません。

最終的にどのような結果を表示または抽出したいのか、例えば、検索条件がA1セルとB1セルにあり、そのデータを別シートに表示したいなど、もう少し具体的にご希望の操作を例示してください。

投稿日時 - 2013-11-13 12:39:03

お礼

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

投稿日時 - 2013-11-14 09:28:41

あなたにオススメの質問