Excel VBA質問箱 IV

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

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


8873 / 13646 ツリー ←次へ | 前へ→

【30554】データベースに検索窓&実行ボタンをとりつける。 千野 05/10/30(日) 21:02 質問[未読]
【30557】Re:データベースに検索窓&実行ボタンをと... かみちゃん 05/10/30(日) 21:25 発言[未読]
【30558】Re:データベースに検索窓&実行ボタンをと... 千野 05/10/30(日) 21:35 発言[未読]
【30560】Re:データベースに検索窓&実行ボタンをと... かみちゃん 05/10/30(日) 21:48 発言[未読]
【30561】Re:データベースに検索窓&実行ボタンをと... 千野 05/10/30(日) 22:42 発言[未読]
【30562】Re:データベースに検索窓&実行ボタンをと... かみちゃん 05/10/30(日) 22:57 発言[未読]
【30563】Re:データベースに検索窓&実行ボタンをと... 千野 05/10/30(日) 23:22 発言[未読]
【30569】Re:データベースに検索窓&実行ボタンをと... かみちゃん 05/10/31(月) 7:16 発言[未読]
【30582】Re:データベースに検索窓&実行ボタンをと... かみちゃん 05/10/31(月) 12:55 発言[未読]
【30613】Re:データベースに検索窓&実行ボタンをと... 千野 05/10/31(月) 23:58 お礼[未読]

【30554】データベースに検索窓&実行ボタンをとり...
質問  千野  - 05/10/30(日) 21:02 -

引用なし
パスワード
   こんにちわ、はじめまして。千野と申します。

OS→XP エクセルver.→2002 が前提です。ただいま、とあるコンタクトセンター内で使うデータベースに初心者でも利用しやすい「検索&抽出」の機能を装填させたいと考えています。

イメージは、「オートフィルタ」機能を「YAHOO!」の検索窓のような形にして利用ができないか?ということです。「オートフィルタ機能」には、あらかじめ設定したキーワードを選ぶと、そのキーワードが設定されたレコードのみを抽出し、表示してくれます。また必要に応じて、複数のキーワードのand、or検索が可能です。(→オプション検索)

理想としては、【1】自由に文字を入れられるスペース 【2】検索実行&抽出したレコードのみを表示させる「検索」という名のボタン 【3】スペース内の文字を消す&抽出結果を解除して全表示に戻す「クリア」ボタン

以上の3点をそのデータベースの上部につけたいと考えています。【2】と【3】のプログラムの記述方法、【2】のプログラムを【1】へどうやって関連付けるか・・。

コンタクトセンター内にて、オートフィルタの活用方法の啓蒙活動も並行して行うつもりですが、どうしてもオートフィルタですと、設定するキーワードはユーザー目線ではない、ということと、キーワードをむやみに増やしすぎてもドロップダウンリストが膨らみすぎて、逆に不便だと思うのです。

なので、コンタクトセンターへ入社してきて、ただでさえ覚えることがたくさんある新入社員や、日々、業務をこなしていく方達のために、そしてそのデータベースは日々増えていくものであるためにより検索や絞込みが簡単に行える手はないかと考えたところ、検索窓&実行ボタンの設置という結論にこぎつけましたが、まずはどのようにしたらよいでしょうか?

マクロの記録など色々行ってみましたが、やはりうまく作動しません・・・。
どうか回答を宜しくお願い致します。

【30557】Re:データベースに検索窓&実行ボタンを...
発言  かみちゃん E-MAIL  - 05/10/30(日) 21:25 -

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

何年か前に、知人の依頼で同様のマクロを作った経験があります。

>【1】自由に文字を入れられるスペース

1行目あたりのセルをお考えですか?
それとも、UserFormをお考えですか?
シート上のテキストボックスという考えなら、ちょっとややこしいかもしれません。

>【2】検索実行&抽出したレコードのみを表示させる「検索」という名のボタン

これも、シート上に配置するのですか?
UserFormですか?
いずれにしても、「検索」ボタンをクリックしたら、オートフィルタを実行するよ
うにすればいいと思います。
オートフィルタのコードは、「マクロの記録」で記録することができます。

>【3】スペース内の文字を消す&抽出結果を解除して全表示に戻す「クリア」ボタン

これも、「マクロの記録」で記録できます。

【30558】Re:データベースに検索窓&実行ボタンを...
発言  千野  - 05/10/30(日) 21:35 -

引用なし
パスワード
   かみちゃんさん、早速の返信有り難うございます。

>>【1】自由に文字を入れられるスペース
>
>1行目あたりのセルをお考えですか?
>それとも、UserFormをお考えですか?
>シート上のテキストボックスという考えなら、ちょっとややこしいかもしれません。

現時点では、シート上にテキストボックスを配置する方法が良いと考えています。オートフィルタの他にCtrl+Fを押して検索ダイアログを表示する超基本的な方法もあるのですが、やはりデータベースを開いたときにドーンと検索窓が見えたほうが、『あぁ、ここにキーワードを入れて検索するんだな』というのが一目でわかるからです。

ややこしい、というのはプログラムソースが複雑になるのでしょうか?それとも動作がスムーズにいかないことがある、ということでしょうか?

>>【2】検索実行&抽出したレコードのみを表示させる「検索」という名のボタン
>
>これも、シート上に配置するのですか?
>UserFormですか?
>いずれにしても、「検索」ボタンをクリックしたら、オートフィルタを実行するよ
>うにすればいいと思います。
>オートフィルタのコードは、「マクロの記録」で記録することができます。

上述の通り、シート上の配置を考えています。さて、初歩的な質問で申し訳無いのですが、オートフィルタの記録のとり方というのはどのようにすればよろしいのでしょうか?

【30560】Re:データベースに検索窓&実行ボタンを...
発言  かみちゃん E-MAIL  - 05/10/30(日) 21:48 -

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

>現時点では、シート上にテキストボックスを配置する方法が良いと考えています。

非常に個人的な意見なのですが、シート上のテキストボックスの利用はあまり好き
ではありません。
できないことはないですが、UserFormを表示させて、条件を入力して、コマントボ
タンをクリックすると抽出されるという仕組みのほうがわかりやすいコードになる
と思っています。
テキストボックスを利用したコードは書いたことがなく、個人的におすすめできる
方法でもないと思っていますので、その方法についてのコメントは控えさせていた
だきたいと思います。(単に自信がない逃げだけかも?)

>オートフィルタの記録のとり方というのはどのようにすればよろしいのでしょうか?

「マクロの記録など色々行ってみましたが」とおっしゃっていたので、ご存知なのでは?

【30561】Re:データベースに検索窓&実行ボタンを...
発言  千野  - 05/10/30(日) 22:42 -

引用なし
パスワード
   >>現時点では、シート上にテキストボックスを配置する方法が良いと考えています。
>
>非常に個人的な意見なのですが、シート上のテキストボックスの利用はあまり好き
>ではありません。
>できないことはないですが、UserFormを表示させて、条件を入力して、コマントボ
>タンをクリックすると抽出されるという仕組みのほうがわかりやすいコードになる
>と思っています。
>テキストボックスを利用したコードは書いたことがなく、個人的におすすめできる
>方法でもないと思っていますので、その方法についてのコメントは控えさせていた
>だきたいと思います。(単に自信がない逃げだけかも?)

ご回答ありがとうございます。ユーザーが初心者であることを鑑み、テキストボックスを設置したいという現時点の考え方は変わっていませんが、それはUserformを設置するという選択肢が、質問投稿前には無かったこともあります。VBAの知識はほぼゼロに近い僕の知識では、条件検索+絞込抽出表示=フィルタをかけた状態にする方法がイマイチわからないでいます。

>>オートフィルタの記録のとり方というのはどのようにすればよろしいのでしょうか?
>
>「マクロの記録など色々行ってみましたが」とおっしゃっていたので、ご存知なのでは?

記録の取り方も、シート間移動など簡易なものだけなんです。色々といっても、素人の好奇心レベルのようなものです。ご存知であれば教えて頂きたいと思っています。

【30562】Re:データベースに検索窓&実行ボタンを...
発言  かみちゃん E-MAIL  - 05/10/30(日) 22:57 -

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

>ユーザーが初心者であることを鑑み、テキストボックスを設置したいという現時点の考え方は変わっていませんが、それはUserformを設置するという選択肢が、質問投稿前には無かったこともあります。

ユーザーが初心者であれば、なおさらです。
検索用のテキストボックスを誤って削除されたらどうするのですか?
そんなことをついつい考えてしまうので、UserFormをおすすめしています。
初心者なら、UserFormを誤って消すことはしないだろうし、ちょっと知っている人
ならば、UserFormを消したらだめということはわかるのではないかと思います。

>VBAの知識はほぼゼロに近い僕の知識では、条件検索+絞込抽出表示=フィルタをかけた状態にする方法がイマイチわからないでいます。

フィルタをかけたときに、値を選択すると思いますが、それが、テキストボックス
なり、UserFormのテキストボックスの値にコード上で置き換えるのです。

>>>オートフィルタの記録のとり方というのはどのようにすればよろしいのでしょうか?
>>
>>「マクロの記録など色々行ってみましたが」とおっしゃっていたので、ご存知なのでは?
>
>記録の取り方も、シート間移動など簡易なものだけなんです。色々といっても、素人の好奇心レベルのようなものです。ご存知であれば教えて頂きたいと思っています。

「マクロの記録」については、以下のURLが参考になるかと思いますが
http://www6.plala.or.jp/MilkHouse/menu.html
基本的に「マクロの記録」は、記録開始から終了までの間のExcelの操作をほぼす
べて記録できますので、シート間移動と同じような方法で、オートフィルタの抽出

解除を記録してみましょう。きちんと記録できますし、VBAの基本ですから。
がんばってみませんか?

【30563】Re:データベースに検索窓&実行ボタンを...
発言  千野  - 05/10/30(日) 23:22 -

引用なし
パスワード
   >>ユーザーが初心者であることを鑑み、テキストボックスを設置したいという現時点の考え方は変わっていませんが、それはUserformを設置するという選択肢が、質問投稿前には無かったこともあります。
>
>ユーザーが初心者であれば、なおさらです。
>検索用のテキストボックスを誤って削除されたらどうするのですか?
>そんなことをついつい考えてしまうので、UserFormをおすすめしています。
>初心者なら、UserFormを誤って消すことはしないだろうし、ちょっと知っている人
>ならば、UserFormを消したらだめということはわかるのではないかと思います。

データベースは編集権限のある担当以外は、読取専用でしか開けないようにしていますので、誤操作による削除は心配ないです。それで足りないならシートに保護をかけます。

>>VBAの知識はほぼゼロに近い僕の知識では、条件検索+絞込抽出表示=フィルタをかけた状態にする方法がイマイチわからないでいます。
>
>フィルタをかけたときに、値を選択すると思いますが、それが、テキストボックス
>なり、UserFormのテキストボックスの値にコード上で置き換えるのです。

『フィルタをかけたときに、値を選択する』アクションというのは、ユーザーがオートフィルタであらかじめ設定したキーワードを選ぶことでしょうか?それを『コード上で置き換える』というのはどういうことでしょうか?

>>>>オートフィルタの記録のとり方というのはどのようにすればよろしいのでしょうか?
>>>
>>>「マクロの記録など色々行ってみましたが」とおっしゃっていたので、ご存知なのでは?
>>
>>記録の取り方も、シート間移動など簡易なものだけなんです。色々といっても、素人の好奇心レベルのようなものです。ご存知であれば教えて頂きたいと思っています。
>
>「マクロの記録」については、以下のURLが参考になるかと思いますが
>http://www6.plala.or.jp/MilkHouse/menu.html
>基本的に「マクロの記録」は、記録開始から終了までの間のExcelの操作をほぼす
>べて記録できますので、シート間移動と同じような方法で、オートフィルタの抽出
>・
>解除を記録してみましょう。きちんと記録できますし、VBAの基本ですから。
>がんばってみませんか?

参考URLを挙げていただきありがとうございます。今日は、色んな参考ウェブをとび、いろんな参考本にかじりつき、(色んな本屋でかじりつきまくった挙げ句、1冊手に入れました)VBAだけでなく、便利な活用方法を学んで来ています。

【30569】Re:データベースに検索窓&実行ボタンを...
発言  かみちゃん E-MAIL  - 05/10/31(月) 7:16 -

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

>データベースは編集権限のある担当以外は、読取専用でしか開けないようにしていますので、誤操作による削除は心配ないです。それで足りないならシートに保護をかけます。

とりあえず、わかりました。
でも、シート上のテキストボックスの値を参照するコードは、作ったことがないのと、
個人的にあまりおすすめできない方法なので、やはり、コードの提示は控えさせて
いただきたいと思います。

>『フィルタをかけたときに、値を選択する』アクションというのは、ユーザーがオートフィルタであらかじめ設定したキーワードを選ぶことでしょうか?それを『コード上で置き換える』というのはどういうことでしょうか?

「オートフィルタ」の操作を「マクロの記録」で記録すれば、どこが選択している
値を設定しているところかわかると思います。
まずは、「マクロの記録」でオートフィルタのコードを作ってみませんか?
そこからスタートです。
でないと、コードを提示しても、何をしているのか理解しにくいのではと思います。

【30582】Re:データベースに検索窓&実行ボタンを...
発言  かみちゃん E-MAIL  - 05/10/31(月) 12:55 -

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

>個人的にあまりおすすめできない方法なので、やはり、コードの提示は控えさせて
>いただきたいと思います。

とは言ったものの、自分の勉強(?)もかねて作ってみました。
'検索(オートフィルタ)ボタン
Private Sub CommandButton1_Click()
 Range("A4").Select
 Selection.AutoFilter Field:=1, Criteria1:=TextBox1.Value
End Sub

'解除(すべて表示)ボタン
Private Sub CommandButton2_Click()
 If AutoFilterMode Then
  Selection.AutoFilter
 Else
  MsgBox "オートフィルタは実行されていません"
 End If
End Sub

シート上に「コントロールツールボックス」の「テキストボックス」と「コマンド
ボタン」を配置しています。
そのため、上記コードは、標準モジュールではなく、シートモジュールに記述します。
また、検索したいデータベースは、A4セルから下方向にあるものとし、それの1列
めを検索しています。
この前提条件で動作確認はしてあります。

本当は、「マクロの記録」で記録してオートフィルタのコードをよく理解していた
だきたいのですが・・・・

【30613】Re:データベースに検索窓&実行ボタンを...
お礼  千野  - 05/10/31(月) 23:58 -

引用なし
パスワード
   遅くなりました。かみちゃんさん、ご親切にありがとうございます。明日、早速試してみたいと思います。こんな僕に非常に丁寧な返信をして頂き、かみちゃんさんには感謝しています。

僕自身もまだまだ勉強が足りません。使おうと思う所だけ使えればいいやなどと、基礎を疎かにしてプログラムを書くだけ書いても、エラーが発生したときに対処も出来ませんし、やはりプログラムの基礎についてはしっかりと意味を理解し、エラーを想定した対処が出来る様にしなければならないと考えています。


ですから、このスレッドの質問に関しては以上とさせて頂きます。かみちゃんさん本当にありがとうございました。

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