![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセルでVBAの下記コードで実行すると、実行時エラー'1004'
アプリケーション定義またはオブジェクト定義のエラーとなりますが、
Worksheets("作業用").Activate
Worksheets("職員").Range(Cells(6, 1), Cells(Wrow, 12)).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("a6:c8"), CopyToRange:=Range("d6:z2000"),
Unique:=False
それを下記のようにwith end with構文で囲むとエラーとなりません。
形式的には同じコードに見えるのですが、実質的に何が違うためオブジェクト定義エラーにならないのでしょうか。
AdvancedFilterに限らず、しばしば同様の原因によるエラーに悩まされていますので、ご教示いただければ幸いです。
Worksheets("作業用").Activate
With Worksheets("職員")
.Range(.Cells(6, 1), .Cells(Wrow, 12)).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("a6:c8"), CopyToRange:=Range("d6:O2000"), Unique:=False
End With
No.1ベストアンサー
- 回答日時:
こんばんは。
>Worksheets("職員").Range(Cells(6, 1), Cells(Wrow, 12)).AdvancedFilter
Cells(6,1)とCells(Wrow,12)にシートオブジェクトが付加されてないので
それがWorksheets("職員")のセルだと認識されないからです。
Worksheets("職員").Range(Worksheets("職員").Cells(6, 1), Worksheets("職員").Cells(Wrow, 12)).AdvancedFilter
とCellsにシート名を付加しなければなりません。
>with end with構文で囲むとエラーとなりません。
提示のコードにはCellsの前にドットが付加されてますので
これはWorksheets("職員")が付加されているのと同じになりますから
エラーになりません。
Range,Cellsを使うときはそれがどのシートのものか気をつける必要があります。
で、可能な限り、シート名を付加することをお勧めします。
丁寧なご教示まことにありがとうございました。
疑問が解決しました。
どのシートでオブジェクトを参照しているかによって、オブジェクトが参照される場合と参照されない場合があるため、可能なかぎりwith構文でシート名を付加する方が安全だということですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
Excel vbaについての質問
-
実行時エラー'-2147467259(8000...
-
お助けください!VBAのファイル...
-
実行時エラー 438 の解決策をお...
-
JAVA Jasper Report でのQRコー...
-
ACCESSで値を代入できないとは?
-
Excel ピボットテーブル平均・...
-
On ErrorでエラーNoが0
-
文字列内で括弧を使うには
-
【VBAエラー】Nextに対するFor...
-
マクロで"#N/A"のエラー行を削...
-
データベース操作時エラーについて
-
VBA データ(特定値)のある最...
-
VBA エクセル で FIND でのエラ...
-
pythonのopenpyxlについて
-
実行時エラー´5854´ 文字列型パ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
お助けください!VBAのファイル...
-
On ErrorでエラーNoが0
-
実行時エラー'-2147467259(8000...
-
文字列内で括弧を使うには
-
【VBA】ワークブックを開く時に...
-
実行時エラー 438 の解決策をお...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
ApplicationとWorksheetFunctio...
-
フランスの生年月日(jj/mm/aaaa)
-
VBでSQL文のUPDATE構文を使った...
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
ActiveCell.FormulaR1C1の変数
-
「実行時エラー '3167' レコー...
おすすめ情報