• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクトが定義されていません)

オブジェクトが定義されていません

このQ&Aのポイント
  • オブジェクトが定義されていないため、エラーが発生します。
  • With文の使い方が間違っている可能性があります。
  • 詳細なコードを確認して、適切なオブジェクトを定義してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.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) '------------------------------------------------------- また、上記のようにコピー先のセルは、先頭セルのみ指定した方が間違いがなくていいでしょう。 以上です。  

ddtqp
質問者

お礼

いろいろ試したのですが、確かに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

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

\記号の意味は? 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")という書き方よりこっち側の書き方に統一したらいいのでは

ddtqp
質問者

補足

>\記号の意味は? ほんとうですね。アップしたら「\」が表示されていますね。 メモ帳の文字を貼り付けたので、ユニコードか何かの違いででてきたのでしょうか。 >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")と記述しています。

関連するQ&A

専門家に質問してみよう