[[20180516164251]] 『AutoFilterメソッドについて?』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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(水) 17:34

すでに指摘をいただいたので、以降の投稿は不要です。
質問を立てたのに申し訳ありません。
(hiro) 2018/05/16(水) 17:36

他の方はどうだか知りませんが、ヘルプ(やその他説明)が読めなければ、試しても理解できないことも多々あります。とにかく試すというのも手だとは思いますが、そうなると「私は」時間を有効に使えません。助言はありがたいですが、その辺りは個人個人で違うということも、理解していただければと思います。
(hiro) 2018/05/16(水) 17:48

 >他の方はどうだか知りませんが、
こちらも同じ話です。

何らかの意見が欲しいと理解したので、コメントしたまでです。
取捨選択はそちらでお願いします。

個人的には、走ってもみないで、理屈をごねごねしてる人は、好きじゃないかなぁ。。。
そんなことより、、、

で、
>何しているんでしょうか。
疑問は解決したのでしょうか?

それくらいは報告すべきでは?

(まっつわん) 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.