Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Excel 2016)
ユーザフォームからのOR検索
投稿日時: 18/09/23 07:50:40
投稿者: chibikko

下記のコードを作り、上記件名の通りの作業をしたいのですが、J列にフィルタを掛けたいのにH列にフィルタが掛かってしまいます。
コードのどこを修正したらよいのでしょうか。
 
Private Sub 検索_Click()
 
Worksheets("HP用").Range("J2").AutoFilter Field:=10, Criteria1:=TextBox1.Value, Operator:=xlOr, Criteria2:=TextBox2.Value
 
'フォームを閉じる
Unload UserForm
 
End Sub

回答
投稿日時: 18/09/23 10:42:21
投稿者: simple

こんにちは。
「J列にフィルタを掛けたい」というのは、
フィルタ対象(ドロップダウンリストが表示される列)をJ列だけにしたいということですか?
それとも
J列だけを抽出条件に使いたいということですか?
 
前者なら

Worksheets("HP用").Columns("J").AutoFilter Field:=1,(以下略)
とかするんでしょうか。
 
>Worksheets("HP用").Range("J2").AutoFilter Field:=10
としてH列にフィルタが掛かるんですか。
H列は8列目ですよね。(A列を基準にして)
今の事態が私にはよく理解できていません。その記述で合っていますか?

回答
投稿日時: 18/09/23 19:26:48
投稿者: WinArrow
投稿者のウェブサイトに移動

>J列にフィルタを掛けたいのにH列にフィルタが掛かってしまいます。
 
この症状を回答者側で再現できるだけの状況を説明して貰えますか?
 
まず、
(1)表のレイアウトは?
(2)意図したJ列には▼がなくてH列だけ▼があるということですか?
(3)掲示おコードの前に
例: Range("J2").AutoFilter
のようなコードはないのですか?
 
掲示のコードが動いてとすると
A〜JにはAutofilterが設定されていると思います。
なぜならば、Field:=10が有効であることは
A列〜J列まで▼がついているからです。
 
J]列だけオートフィルタを設定したいのでしたら
simpleさんレスのコードを借用して
 
Worksheets("HP用").Columns("J").AutoFilter  '←ここ追加
Worksheets("HP用").Columns("J").AutoFilter Field:=1,(以下略)
となるでしょう。
 
 

回答
投稿日時: 18/09/23 20:44:50
投稿者: もこな2

オートフィルタが設定されている範囲が想定とずれていたりしませんかね?
↓を実行してイミディエイトにどのように出力されるかを教えてもらえれば、アドバイスできることがあるかもしれません。

Sub Test()
    With Worksheets("HP用")
        .AutoFilterMode = False
        .Range("J2").AutoFilter
            Debug.Print .AutoFilter.Range.Address(0, 0)
    End With           
End Sub

回答
投稿日時: 18/09/24 11:53:34
投稿者: mattuwan44

>J列にフィルタを掛けたいのにH列にフィルタが掛かってしまいます。
 
 
Field:=10
と、指定しているので、8列目にフィルターが掛かることは有り得ません。
つまり、前の抽出条件が残ったままになっていると想像されます。
 
いま、エクセルが起動出来ないので、コードは提示できませんが、
一旦データを全部表示するメソッド(=操作)があるので、
探してマクロの記録をしてみれば、コードを探り当てることが出来ます。
 

トピックに返信