- ベストアンサー
エクセルのオートシェイプでセルに入力した日付以上を検索をするマクロをつくりたい
エクセル2003を使用しています。 Bの列に2008/1/1,2008/2/2,2008/3/3というように日付が入力されているのですが、A1に2008/1/10などで入力された日付以上を検索するオートシェイプのマクロがうまく動きません。 Selection.AutoFilter Field:=1, Criteria1:=>Cells(1,1), Operator:=xlAnd と、いうように記述してもエラーとなります。 どのように記述すればよろしいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コンパイルエラーですよね? 比較演算子 > (より大きい) >= (以上) <= (以下) < (より小さい) となります。 今回の間違いは比較演算子も間違っていますが、そうではなく構文のミスです。 回答1も。(明らかにタイプミス)(^^;;; >Selection.AutoFilter Field:=1, Criteria1:=>Cells(1,1), Operator:=xlAnd の Criteria1:=>Cells(1,1) の => が間違い 正しくは、 Criteria1:=">=" & Cells(1,1).Valueです。 Valueは付けなくてもいいがつけた方がベター で、以下のようになります。 Selection.AutoFilter Field:=1, Criteria1:=">=" & Cells(1,1).Value, Operator:=xlAnd 以上。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録をとれば判る問題じゃない。 初心者、いや全ての人は、マクロの記録を活用すべきです。 フィルタはでは、比較演算子はVBAのよう =>Cells(1,1),と書くのでなく、 ・演算子と比較数を合わせて、 ・かつ文字列で(従って””で囲む) やり方で指定する、変わったやり方になっている(関数にはこの型がある)ことに、気づくはずだ。 具体的な日付けを指定した場合 Sub Macro1() Range("A1:A8").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:=">2008/4/13", Operator:=xlAnd End Sub この2008/4/13の部分がセルの値としてあるのだから Sub Macro1() Range("A1:A8").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:=">" & Range("D1"), Operator:=xlAnd End Sub すなわち & D1 でなくRange()をつけ、番地D1をに””を囲む必要ある点に注意。
お礼
私も新しいマクロの記録でマクロを作成後、該当部分を変更するつもりでしたが""でどこを囲むかわからなくて=">=Range("A1")"とかおかしな記述をしていました。""を使うとまずいのかと思ってCellsでやってみたのですが、根本的に間違っていたみたいですね。 マクロの記録便利ですね。命令がわからない記述をとりあえずマクロの記録で実行してみて記述をコピーとかよくやっています。ただマクロの記録で作成したマクロは、そのままではマクロの実行でエラーになったりと混乱することもあります。 教えていただいた記述で無事マクロが動くようになりました。 ありがとうございます。
- hana-hana3
- ベストアンサー率31% (4940/15541)
どのようなエラーが出るのか解りませんが、下記ではいかがでしょうか? Selection.AutoFilter Field:=1, Criteria1:"=>" & Cells(1,1)
お礼
失礼しました、コンパイルエラーです。 教えていただいた記述の頭に「=」をつけるとエラーがなくなりました。 ありがとうございます。
お礼
恥ずかしながら頭に「=」が付いているので「>=」の「=」がいらないと思い込んで「=」の部分を消していました。コンパイルエラーになるのも当たり前ですね。あと""で囲む部分も検討違いのところを見ていました。 教えていただいた記述で無事マクロが動くようになりました。 ありがとうございます。