dポイントプレゼントキャンペーン実施中!

VBAマクロを使用してのエクセル上での
あるシートから別のシートへのコピー&ペーストが
うまくいきません。その時のエラー表示が
「実行時エラー '1004’
 アプリケーション定義またはオブジェクト定義のエラーです。」
 と表示されます。
  Dim NaiyoSta As Long
  Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Set WSNaiyo = Worksheets("内容書")
  NaiyoSta = 1
  と定義しておいて
  '保存
WS2.Range("CA11:CQ37").Select
Selection.Copy
WSNaiyo.Select
WSNaiyo.Range(Cells(NaiyoSta, 1)).Select
    (ここでエラー表示され、処理がストップします。)
ActiveSheet.Paste

WS2.Range("CA11:CQ37").Select
Application.CutCopyMode = False


'印刷
Selection.PrintOut '印刷プレビュー表示後,印刷

    要は Sheet2の "CA11:CQ37" の範囲を
       "内容書"というシートのA1から貼り付けたいのですが
    前記のようにうまくいきません !
    (NaiyoStaは27行おきに貼り付けたいのでインデックスとして
     使用しています)。
    どうか、宜しく御教示下さいますようお願い致します。
    

A 回答 (2件)

Dim NaiyoSta As Long


Dim NaiyoSta As Integer

Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Set WSNaiyo = Worksheets("内容書")


WS2.Range("CA11:CQ37").Copy
WSNaiyo.Cells(NaiyoSta, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False


WS2.Select
WS2.Range("CA11:CQ37").Select

Selection.PrintOut
    • good
    • 0
この回答へのお礼

GETSTREET 様
御回答 ありがとうございました。
御指摘戴いた内容でそのまま
修正しましたら以下のように
ちょっと支障があったので少々、
直させてもらいました。

Dim NaiyoSta As Long  (削除)
Dim NaiyoSta As Integer
(LongとInteger両方定義するとコンパイルエラーとなるので)

Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Set WSNaiyo = Worksheets("内容書")


WS2.Range("CA11:CQ37").Copy
WSNaiyo.Select (追加)

WSNaiyo.Cells(NaiyoSta, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False


WS2.Select
WS2.Range("CA11:CQ37").Select

Selection.PrintOut

以上、少し修正してやっとエラー無く、動く
ようになりました。御指摘のNaiyoSta の Integer の
が大きな原因だったのでしょうか ?
 2日間、ずっとこれで悩んでいたので
大助かりです。有難うございました !

お礼日時:2008/05/09 15:32

>WSNaiyo.Range(Cells(NaiyoSta, 1)).Select


これでえらーがでるのは、Cellsの前にシート名がないからです。
WSNaiyo.Range(WSNaiyo.Cells(NaiyoSta, 1)).Select
が、このように1セルを指定する場合はふつう
WSNaiyo.Cells(NaiyoSta, 1).Select
とします。
Range(Cells,Cells) とするのは範囲指定のときです。


それからSelectメソッドはほとんどの場合不要なので以下の8行は

>WS2.Range("CA11:CQ37").Select
>Selection.Copy
>WSNaiyo.Select
>WSNaiyo.Range(Cells(NaiyoSta, 1)).Select
>ActiveSheet.Paste
>WS2.Range("CA11:CQ37").Select
>Application.CutCopyMode = False
>Selection.PrintOut '印刷プレビュー表示後,印刷

次の2行と同じことです。

WS2.Range("CA11:CQ37").Copy WSNaiyo.Cells(NaiyoSta, 1)
WS2.Range("CA11:CQ37").PrintOut

以上。
 
    • good
    • 0
この回答へのお礼

Onlyrom 様
御回答ありがとうございました。
御指摘のようにSelectで定義しなくても
Copy & Paste はできるんですね !
Select文で使用するシート、セルを指示しないと
Copy & Paste が出来ないのではないかと
思ってました。確かにOnlyromさんの言われる
最後の2行だとSelectの指定も無いし、
文も節約されてすっきりしますね !
有難うございました。

お礼日時:2008/05/09 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!