
先日は色々おしえてくださりありがとうございました。
ベストアンサーを決めると補足ができないと知らず、急に終わらせてしまい申し訳ありません。
先日の質問については、おかげさまで希望の通り動かすことができました。
あとはエラーの処理と、大文字小文字の処理をと思ったところで、
検索条件について変更が入ってしまい、作り直すことになってしまいました。泣
そこで、最初の質問時におしえていただいたフィルターオプションを使い作っております。
今、検索ボックスに正常に条件を入れる分には問題なく動くのですが、間違った入力の際に不思議な動きをしてしまいます。
現在作成中のもの)
・「データ」シートの1~6行目を使い、ActiveXコントロールでテキストボックスを3つ配置。
・1つ目と二つ目は数値の範囲指定となっています。(日付のyyyymmだけを数値として入力)
2つ目は文字列での検索。
・データシートのA7からデータが入っていて、O列まで。
・検索に使うのは、B列とC列で、B列で数値の範囲指定で検索する。
エラーになるところ)
数値で、左のボックス1に小さい数値、右のボックス3に大きい数値を入れると
問題なく範囲抽出できますが、それを反対にすると、本来なら0件になり項目行だけがコピペされる
はずなのに、関係のないデータが出てしまう。
※入力した条件で実際にオートフィルタをやると0件になるのに…
書いてるもの)
Private Sub CommandButton1_Click()
Dim sh As Worksheet, rg As Range
Set sh = Worksheets("データ")
Set rg = Range(sh.Cells(7, 1), sh.Cells(Rows.Count, 1).End(xlUp)).Resize(, 15)
With Worksheets.Add(after:=Worksheets(Worksheets.Count))
.Name = "検索_" & Format(Date, "yyyymmdd_") & Format(Time, "hhmmss")
sh.Cells(7, 2).Copy .Cells(1, 1)
sh.Cells(7, 2).Copy .Cells(1, 2)
sh.Cells(7, 3).Copy .Cells(1, 3)
.Cells(2, 1).Value = ">=" & TextBox1.Value
.Cells(2, 2).Value = "<=" & TextBox3.Value
.Cells(2, 3).Value = "*" & TextBox2.Value & "*"
rg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("B1:C2"), _
CopyToRange:=.Range("A3"), Unique:=False
.Range("1:2").Delete
End With
End Sub
何をどうすれば、正しく抽出できるのでしょうか?
お教えいただけると嬉しいです。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
「正常に条件を入れる分には問題なく動く」とのことですが、本当ですか?
AdvancedFilter の CriteriaRange が、B1:C2 となっていますが、前段のコードを見る限り A1:C2 が正しいような気がします。ちょっとやってみて下さい。
間違っていたらゴメンナサイ。
ご回答ありがとうございます。
おっしゃる通りです。
正常に動いたと思っていたのですが、データの一番小さいものを
先頭に入れていたので、そう見えているだけでした。
ご指摘の個所を直したら、希望通り動きました!!
どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ExcelVBA フォームでデータ検索して一致したものを新しいシートへコピーする
Visual Basic(VBA)
-
複数列を指定、3列含む行が空白だったら背景色をつける。 質問を見てくださってありがとうございます。
Visual Basic(VBA)
-
vba列範囲の拡大について
Visual Basic(VBA)
-
4
VBA ブックのイベント
Visual Basic(VBA)
-
5
転記 マクロ VBA
Visual Basic(VBA)
-
6
エクセルVBA→シート名でCSV出力する際、シートの文字列はそのままで、CSVでは文字を置き換えて出
Visual Basic(VBA)
-
7
for Each の入れ子で、できそうなのですが。。。。
Visual Basic(VBA)
-
8
下記のコードでセルの値を入力する範囲を指定するにはどうすればいいでしょうか。 (セルA1から1つずつ
Visual Basic(VBA)
-
9
ExcelのVBAプログラム作成について
Visual Basic(VBA)
-
10
複数のcsvファイルをフォルダごと指定して列方向に結合するマクロを作成したい
Visual Basic(VBA)
-
11
VBA target Range を変えたら良く作動しなくなりました。
Visual Basic(VBA)
-
12
FileSystemObjectの質問 最後
Visual Basic(VBA)
-
13
マクロについて教えてください
Visual Basic(VBA)
-
14
VBA データを転記した複数シートを別ブックに名前をつけて保存したい
Visual Basic(VBA)
-
15
エクセル vba ある検索値を別ブックから参照し一致したすべての行で特定の列の値を返す
Visual Basic(VBA)
-
16
Excelマクロ F8で1行マクロ実行ならできるのに一気に実行するとエラーになる。
Visual Basic(VBA)
-
17
Excelマクロについて
Visual Basic(VBA)
-
18
エクセルマクロで結合セルに格子線を引く方法
Visual Basic(VBA)
-
19
vba 進捗状況
Visual Basic(VBA)
-
20
Excel VBA に関する質問です。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【EXCEL VBA】ブック内の特定の...
-
5
ExcelVBAで、コメントのサイズ...
-
6
GUIDの重複
-
7
クロス集計
-
8
ポインター引数の関数でコンパ...
-
9
エクセルシート名の制限を変更...
-
10
int型(2バイト)データの分割
-
11
バイナリとBCDコード
-
12
UTF-8で5~6バイトになる文字コ...
-
13
64bit対応
-
14
DOSのdirコマンドで思うように...
-
15
COBOLで変数が何文字で宣言され...
-
16
javascriptでcookieを削除するには
-
17
正規表現で単語長(文字数?)...
-
18
VB.NET LeftBの代用
-
19
ビットスワップとバイトスワッ...
-
20
pythonでバイナリデータを配列...
おすすめ情報