Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12314 / 13645 ツリー ←次へ | 前へ→

【11100】フィルタについて などなど 04/2/28(土) 4:32 質問
【11104】Re:フィルタについて かみちゃん 04/2/28(土) 11:01 回答
【11124】Re:フィルタについて などなど 04/2/28(土) 20:49 質問
【11130】Re:フィルタについて かみちゃん 04/2/28(土) 23:32 回答
【11133】Re:フィルタについて などなど 04/2/29(日) 2:18 質問
【11105】Re:フィルタについて Jカーター 04/2/28(土) 11:13 回答
【11125】Re:フィルタについて などなど 04/2/28(土) 20:50 質問
【11164】Re:フィルタについて アイエネス 04/3/1(月) 19:42 回答
【11166】Re:フィルタについて などなど 04/3/1(月) 23:46 お礼

【11100】フィルタについて
質問  などなど  - 04/2/28(土) 4:32 -

引用なし
パスワード
   初めて投稿します。m(._.)m 

フォームを作って、入力した品番(半角/全角・英数のもの)のレコードを抽出し、その部分を別の部分もしくは別のシートにコピーペーストしたいのですが、テキストボックスに1行のみ入力だとフィルタがかかるのですが、複数行の項目だとフィルタがかかりません。
(テキストボックスのプロパティを EnterKeyBehavior True, MultiLine True,にしたら複数行入力できましたが、フィルタが効かなくなってしまいました)

複数(10〜30ぐらい)の品番をテキストデーターからフォームのテキストボックスにコピーペーストして自動的にフィルタがかかって他のシートにコピーペーストされるというようになるといいのですが。
テキストボックス・リストボックスなどありますが、これにしないといけないといいったものなどあるのでしょうか?

なにかよい方法があったらご指導ください

【11104】Re:フィルタについて
回答  かみちゃん E-MAIL  - 04/2/28(土) 11:01 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>フォームを作って、入力した品番(半角/全角・英数のもの)のレコードを抽出し、その部分を別の部分もしくは別のシートにコピーペーストしたいのですが、テキストボックスに1行のみ入力だとフィルタがかかるのですが、複数行の項目だとフィルタがかかりません。

どのようなコードを書いているのかはわかりませんが、オートフィルタを使っているのならば、2件までしかできないのではないでしょうか?

>複数(10〜30ぐらい)の品番をテキストデーターからフォームのテキストボックスにコピーペーストして自動的にフィルタがかかって他のシートにコピーペーストされるというようになるといいのですが。

抽出条件をテキストボックスから転記するシートを用意して、各々のデータがその抽出条件に一致するかどうかをVlookup関数などで判断させ、一致したものだけをオートフィルタで抽出、他のシートへコピーするという方法ではでどうでしょうか?
元のデータシートを見せていただければ、もう少し具体的なお話はできると思いますが・・・

【11105】Re:フィルタについて
回答  Jカーター  - 04/2/28(土) 11:13 -

引用なし
パスワード
   ▼などなど さん:
>複数(10〜30ぐらい)の品番を
>テキストデーターからフォームのテキストボックスにコピーペーストして

こんにちは。
この状態では改行文字を挟んだ一つの文字列になっていますので
そのまま使ってはヒットしないでしょう。

Split関数で配列に分割して
フィルタオプションの条件にすればできそうです。

とりあえず
つかっているExcelのバージョンと現在のコードを書いてみて下さい。

【11124】Re:フィルタについて
質問  などなど  - 04/2/28(土) 20:49 -

引用なし
パスワード
   かみちゃんさん
こんばんは
本とにらめっこしてやってます。

バージョン:97,2000で作ってます(会社は97 自宅は2000です)
会社の資料は持ち帰れないので自宅では偽サンプルで同じような項目を作ってテストしています。
■データー□名前□会社名□商品名□住所 など20項目ほど設定(実際のデーターは24項目あります)
■フォーム:●ボタン3種類(サーチ・フィルタ解除・閉じるの三つです)
      ●テキストボックス1つ 
------------------------------------------------------

Sub オートフィルター()

UserFormJOB2.Show vbModeless ’オートフィルタ実行

End Sub
------------------------------------------------------
□userfom Initialze
Private Sub UserForm_Initialize()

TextBox1.MultiLine = False

End Sub
(テキストボックスに複数項目入力できるようにしたのですが必要でしょうか?)
(テキストボックスのプロパティで設定すればよいのでしょうか?)
------------------------------------------------------
□サーチ click
Private Sub サーチ_Click()

ActiveSheet.UsedRange.AutoFilter _
Field:=ActiveCell.Column, _
Criteria1:="=*" & TextBox1.Value & "*"  'オートフィルタを実行
   
End Sub
------------------------------------------------------
□フィルタ解除
Private Sub フィルタ解除_Click()
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
End Sub
------------------------------------------------------
フィルターを実行し、フィルタをかけたいセルをアクティブにしてフォームに項目を入力しフィルターをかけるといったシンプルなものなのですが。
実際にフィルタをかけたいのは、商品名(半角・全角・英数のものです)
現在半角・全角それぞれ入力をわけないとフィルタがかからないので修正中です

よろしくお願い致します。

【11125】Re:フィルタについて
質問  などなど  - 04/2/28(土) 20:50 -

引用なし
パスワード
   カーターさん
こんばんは
返信ありがとうございます

バージョン:97,2000で作ってます(会社は97 自宅は2000です)
会社の資料は持ち帰れないので自宅では偽サンプルで同じような項目を作ってテストしています。
■データー□名前□会社名□商品名□住所 など20項目ほど設定(実際のデーターは24項目あります)
■フォーム:●ボタン3種類(サーチ・フィルタ解除・閉じるの三つです)
      ●テキストボックス1つ 
------------------------------------------------------

Sub オートフィルター()

UserFormJOB2.Show vbModeless ’オートフィルタ実行

End Sub
------------------------------------------------------
□userfom Initialze
Private Sub UserForm_Initialize()

TextBox1.MultiLine = False

End Sub
(テキストボックスに複数項目入力できるようにしたのですが必要でしょうか?)
(テキストボックスのプロパティで設定すればよいのでしょうか?)
------------------------------------------------------
□サーチ click
Private Sub サーチ_Click()

ActiveSheet.UsedRange.AutoFilter _
Field:=ActiveCell.Column, _
Criteria1:="=*" & TextBox1.Value & "*"  'オートフィルタを実行
   
End Sub
------------------------------------------------------
□フィルタ解除
Private Sub フィルタ解除_Click()
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
End Sub
------------------------------------------------------
フィルターを実行し、フィルタをかけたいセルをアクティブにしてフォームに項目を入力しフィルターをかけるといったシンプルなものなのですが。
実際にフィルタをかけたいのは、商品名(半角・全角・英数のものです)
現在半角・全角それぞれ入力をわけないとフィルタがかからないので修正中です

よろしくお願い致します。

【11130】Re:フィルタについて
回答  かみちゃん E-MAIL  - 04/2/28(土) 23:32 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>フィルターを実行し、フィルタをかけたいセルをアクティブにしてフォームに項目を入力しフィルターをかけるといったシンプルなものなのですが。
>実際にフィルタをかけたいのは、商品名(半角・全角・英数のものです)
>現在半角・全角それぞれ入力をわけないとフィルタがかからないので修正中です

「複数行の項目だとフィルタがかかりません。」とありましたが、ご提示いただいたコードでは、「RangeクラスのAutoFilterメソッドが失敗しました」というエラーになるのではないでしょうか?

また、「複数(10〜30ぐらい)の品番をテキストデーターからフォームのテキストボックスにコピーペーストして」とありましたが、AutoFilterは、Criteria1とCriteria2の抽出条件は2つまでです。つまり、2つを超える条件がある場合は、AutoFilterは使えないと思います。(手動でもできません。)

したがって、さきほども書きましたが、抽出条件をテキストボックスから転記するシートを用意して、各々のデータがその抽出条件に一致するかどうかをVlookup関数などで判断させ、一致したものだけをオートフィルタで抽出、他のシートへコピーするという方法か、もしくは、1行ずつ抽出条件に一致するかどうかをチェックして、一致したものだけを別のシートへコピーするというように考え方を変えたほうがいいかと思います。
どんなシートになっているかわかりませんので、もしよろしければメールでテストシートを送ってみてください。

【11133】Re:フィルタについて
質問  などなど  - 04/2/29(日) 2:18 -

引用なし
パスワード
   かみちゃんさん
ご返信ありがとうございます。
メールにてテスト用サンプルお送りしましたのでお願い致します。


m(._.)m などなど

【11164】Re:フィルタについて
回答  アイエネス  - 04/3/1(月) 19:42 -

引用なし
パスワード
   こんばんは

1列に複数の条件(2つ以上)を設定してフィルタリングしたいということですよね?
それであれば、フィルタオプションの設定でどうでしょう?どこかのセルにフィルタ条件を書ければ可能です。

もし、セルに書き込みができないときは、テキストボックスの複数行のデータを一つずつ変数に代入し、比較して合致しない行を非表示にするという方法もあります。

【11166】Re:フィルタについて
お礼  などなど  - 04/3/1(月) 23:46 -

引用なし
パスワード
   アイエネス さん

こんばんは などなどです。
返信いただきましてありがとうございます。

今回色々な方にご意見を頂きました。感謝!感謝です。

アイエネスさんがおっしゃったように非表示にするといった方法をやはり教えてくださった方がいました。

またvlookup関数を利用した方法をかみちゃんさんが教えてくださり、データーもサンプル例を頂きましてとてもスマートに検出できるようになりました。

データをご提供してくだっさった、かみちゃんさん、非表示の方法を提案してくだっさったアイエネスさん。
色々教えてくださりありがとうございます。

VBA初心者でフィルタの項目ばかり調べておりまして難儀していましたが、検索方法も色々考えれば作成可能ということが分かり大変勉強になり助かりました。

どうもありがとうございます。

12314 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free