- ベストアンサー
オブジェクトが定義されていません
- オブジェクトが定義されていないため、エラーが発生します。
- With文の使い方が間違っている可能性があります。
- 詳細なコードを確認して、適切なオブジェクトを定義してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
理由は不明ですが、Withステートメントを使って COPYメソッドを2行にした場合に質問のエラーが出るようなので Copyメソッドは1行で使うか 2行目では名前付き引数destinationを使うか のどちらかを使用すればいいでしょう。 '-------------------------------------------------- .Range("Y7:Y1446").Copy .Range("Z7") .Range(.Cells(intGyou + 7, 25), .Cells(1446, 25)).Copy .Range("Z7") .Range(.Cells(7, 25), .Cells(intGyou + 6, 25)).Copy .Cells(1447 - intGyou, 26) '------------------------------------------------------- .Range("Y7:Y1446").Copy _ Destination:=.Range("Z7") .Range(.Cells(intGyou + 7, 25), .Cells(1446, 25)).Copy _ Destination:=.Range("Z7") .Range(.Cells(7, 25), .Cells(intGyou + 6, 25)).Copy _ Destination:=.Cells(1447 - intGyou, 26) '------------------------------------------------------- また、上記のようにコピー先のセルは、先頭セルのみ指定した方が間違いがなくていいでしょう。 以上です。
その他の回答 (1)
- rivoisu
- ベストアンサー率36% (97/264)
\記号の意味は? ThisWorkbook.Sheets(\"default\") 通常 Worksheets("Sheet1") (シート名がSheet1のとき) 同様に Range(\"Y7:Y1446\").Copy _ .Range (\"Z7:Z1446\") という書き方も変 Copyの後のアンダーバーも意味がわからない アンダーバーはセンテンスを次の行につなげる(一行が長くなるときに使用)ものです。 コピペするときは Range("Y7:Y1446").Copy Range("Z7:Z1446").Paste 後のほうでは Range(.Cells(7, 25), .Cells(intGyou + 6, 25)) という書き方をしているのでRange("Y7:Y1446")という書き方よりこっち側の書き方に統一したらいいのでは
補足
>\記号の意味は? ほんとうですね。アップしたら「\」が表示されていますね。 メモ帳の文字を貼り付けたので、ユニコードか何かの違いででてきたのでしょうか。 >Range(\"Y7:Y1446\").Copy _ >.Range (\"Z7:Z1446\") >という書き方も変 >Copyの後のアンダーバーも意味がわからない copy,pasteを使用するとクリップボードを経由して遅くなるんです。 下記のようにDestinationをつけると見慣れたものでわかりやすいと思います。 Worksheets("Sheet1").Range("A1:B10").Copy _ Destination:=Worksheets("Sheet2").Range("A1") >Range(.Cells(7, 25), .Cells(intGyou + 6, 25)) >という書き方をしているのでRange("Y7:Y1446")という書き方よりこっち側の書き方に統一したらいいのでは すいません。間違いをみつけやすいようにあえてRange("Y7:Y1446")と記述しています。
お礼
いろいろ試したのですが、確かにWith使用時Destinationをつけたら動作オッケーでした。 以下のコードのように貼り付け先も、間違いが少ないように先頭セル指定に変えました。 助かりました。ありがとうございます。 intGyou = Int(intDeley(i) * 2) With ThisWorkbook.Sheets("default") If intDeley(i) = 0 Then .Range("Y7:Y1446").Copy _ Destination:=.Range("Z7") Application.CutCopyMode = False Else .Range(.Cells(intGyou + 7, 25), .Cells(1446, 25)).Copy _ Destination:=.Range("Z7") .Range(.Cells(7, 25), .Cells(intGyou + 6, 25)).Copy _ Destination:=.Cells(1447 - intGyou, 26) Application.CutCopyMode = False End If End With