【無料配信♪】Renta !全タテコミ作品第1話

先日は色々おしえてくださりありがとうございました。
ベストアンサーを決めると補足ができないと知らず、急に終わらせてしまい申し訳ありません。
先日の質問については、おかげさまで希望の通り動かすことができました。
あとはエラーの処理と、大文字小文字の処理をと思ったところで、
検索条件について変更が入ってしまい、作り直すことになってしまいました。泣
そこで、最初の質問時におしえていただいたフィルターオプションを使い作っております。
今、検索ボックスに正常に条件を入れる分には問題なく動くのですが、間違った入力の際に不思議な動きをしてしまいます。

現在作成中のもの)
・「データ」シートの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

何をどうすれば、正しく抽出できるのでしょうか?
お教えいただけると嬉しいです。
よろしくお願いいたします。

A 回答 (1件)

「正常に条件を入れる分には問題なく動く」とのことですが、本当ですか?



AdvancedFilter の CriteriaRange が、B1:C2 となっていますが、前段のコードを見る限り A1:C2 が正しいような気がします。ちょっとやってみて下さい。
間違っていたらゴメンナサイ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
おっしゃる通りです。
正常に動いたと思っていたのですが、データの一番小さいものを
先頭に入れていたので、そう見えているだけでした。
ご指摘の個所を直したら、希望通り動きました!!
どうもありがとうございました!

お礼日時:2020/11/26 10:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング