[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『AutoFilterメソッドについて?』(hiro)
以下のプロシージャについて、教えてください。
Dim i As String i = Application.InputBox("顧客コードの入力") If i <> "False" Then Worksheets("Sheet1").Activate Range("C3").AutoFilter Field:=1, Criteria1:=i End If エクセルのシートへの入力はありません。 今あるのはプロシージャだけです。
Inputboxメソッドで、iに文字列を入力するのですよね。
で、「顧客コード」のフィールドでiが含まれたもの(?まだ調べ途中で、よくわかっていないです、すみません)を…何しているんでしょうか。
よろしければお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
オートフィルターだから抽出以外しませんよね?
>エクセルのシートへの入力はありません。
サンプルデータを作って手動で操作してみては?
頭でっかちに言葉だけでどうのこうのしたところで、
イメージできないと思いますが?
マクロの前にエクセルの一般機能の使い方を勉強されてみては?
参考URL>>
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html
(まっつわん) 2018/05/16(水) 17:17
(hiro) 2018/05/16(水) 17:25
エクセルのフィルター関連の語句を調べている最中です。
質問文に書いてますが…ヘルプがすんなり理解できている気がしないので。
重ね重ね失礼をいたしました。
(hiro) 2018/05/16(水) 17:29
何らかの意見が欲しいと理解したので、コメントしたまでです。
取捨選択はそちらでお願いします。
個人的には、走ってもみないで、理屈をごねごねしてる人は、好きじゃないかなぁ。。。
そんなことより、、、
で、
>何しているんでしょうか。
疑問は解決したのでしょうか?
それくらいは報告すべきでは?
(まっつわん) 2018/05/16(水) 18:20
また繰り返しているように、あくまで試す前の理解です。頭で考えるだけで終わらそうとはしてませんよ。好かれるかどうかはともかく、そういう人もいるってこともご理解いただけるとありがたいです。しかし強要の意図はありませんので、こちらも誤解なきようお願いします。
疑問は解決していません。「何をしているんでしょうか」の答えは、上に書いた通りです。ここにはふさわしくないレベルの質問だったようですから、更新するつもりもありません。まっつわん様含め、誰の役に立つものでもないでしょう?
上のコメントを自分宛てだと思ったせいで不快になられているのか、そうでなくても不快なのかはわかりませんが、これ以上ここを荒らすような真似はしたくないので、これで失礼したいです。
以上です。
(hiro) 2018/05/17(木) 12:35
〜〜ヘルプより抜粋〜〜
Criteria1 オプション バリアント型 (Variant) 抽出条件となる文字列 ("101" など) を指定します。"="
〜〜抜粋終わり〜〜
だから、
抽出条件をインプットボックスに抽出用のキーワードを入れて、
オートフィルターでキーワードを含むデータを抽出しようとしてるコードのようですが、
そういう事ではなくて?
そういうことならマクロの記録をしてみることで、Criteria1 に何が
入ってこないといけないのかが実感としてわかると思ったのですが。。。
>まっつわん様含め、誰の役に立つものでもないでしょう?
いや、僕にとって、説明が通じるかどうかはすごい重要なことなんですけど。。。
プログラムってパソコンに自分の意図を説明する文章の羅列なので、
回答する=プログラムを書く練習の一環なんです。
なので、こちらの意図が上手く伝わったかどうかはすごく気になりますので、
解決したならどう解決されたか説明されて欲しいし、
解決されてないなら、解決していないと言葉にして欲しいです。
文字のやり取りしか掲示板ではできませんので、
説明されてないこと以外は回答側には伝わりませんので誤解なきようお願いします。
(まっつわん) 2018/05/17(木) 13:24
そもそも質問が私にはよくわかりません。
>Inputboxメソッドで、iに文字列を入力するのですよね。
うん。そうですね。String型として定義した「i」にInputboxメソッドで文字列を与えようとしますね。
>If i <> "False" Then
ここで、Inputboxメソッドが×ボタンで閉じられたら、論理値のFalseがString型に格納されて文字列になってるから「"False"」かどうかを判定して
>Worksheets("Sheet1").Activate
ここで、「Sheet1」をアクティブにして
>(ActiveSheet.)Range("C3").AutoFilter Field:=1, Criteria1:=i
ここでアクティブシートの(標準モジュールに書いているのであれば、シートの修飾を省略するとアクティブシートのものとみなされるため)C3セルが含まれる表範囲にオートフィルタを設定して、オートフィルタを設定した範囲の1列目でInputboxメソッドで指定した値と完全に一致するものをオートフィルタで抽出
っていうコードですね。
そのうえで、何がわからないのかわからないです。
「Criteria1:=」ってのがなにかわからないのであれば、それこそ適当なデータでオートフィルタを手動で設定してみて、「マクロの記録」でどんなコードが書かれるか調べてアタリを付けてみればいいでしょう。
ちょっとくらい間違ってもパソコンが爆発したりはしないので、いつ自分が望む回答が返ってくるかわからない質問掲示板で望む回答が付くまでず〜〜っと待ってるんじゃなくて、ご自身でテストしたほうがよっぽど貴方の「時間」を大切に使えると思います。
ちなみに、この内容を書くのに、のんびりテレビ見ながらだったので「私の時間」を40分ほど使いましたが、適当なデータを用意してマクロの記録でどのようなコードが記録されるのかを確認するだけなら、5分ほどで足りました。参考まで。
(もこな2) 2018/05/18(金) 01:35
VBAという言語の理解のために、他の汎用言語と違う点があります。
それは一般機能の理解がある程度前提にされていることです。
オートフィルタの機能の説明はVBAのヘルプでは
形式的なものになりがちです。
フィルタオプション、ピボットテーブルの利用なども同様です。
総合的な理解が必要になります。
そのあたりは質問掲示板に投げるより
もっと有効な手があります。以下は重複するので割愛します。う
これは何ですかという質問には少し違和感があります。
こういうことをしたい、という観点が欠落しています。
本にあるコードなら前後関係を書くべきだし、
あなたが書いたものなら、こう言うつもりという
説明がなければ、質問の体をなしません。
VBAは強力なツールになりえます。
是非頑張ってください。
感想だけですみません。
(γ) 2018/05/18(金) 09:00
いずれにせよ私も予定早まり、近日中ここに来れなくなります。したがって回答くださった皆様にお礼申し上げるとともに、もし解決すれば書き込むのみとします。返信に対する言及は控えます。
皆様ありがとうございました。
管理人様、申し訳ありませんでした。
失礼します。
(hiro) 2018/05/19(土) 11:58
もし次に書き込む人がいるなら…もう一度、私の書いたこれまでの返信を読み直してもらえると嬉しいと…私は思います。
書き方が悪かったかもしれませんが、私は回答を待つだけではありませんでした。その間も調べていましたし、試していました。それで解決に時間がかかるのは一般的には能力不足かもしれませんが…調べたり試したりするのを面倒くさがる人なら、そもそもVBAなんてやり始めない…と私は思います。
そもそもの話、私も、答えだけを求めていたわけではないですしね…。
上も含め急いで書きましたので、駄文どうかご容赦ください。
本当に失礼でしました。あfv
(hiro) 2018/05/19(土) 12:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.