
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行おきに貼り付けたいのでインデックスとして
使用しています)。
どうか、宜しく御教示下さいますようお願い致します。
No.1ベストアンサー
- 回答日時:
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
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日間、ずっとこれで悩んでいたので
大助かりです。有難うございました !
No.2
- 回答日時:
>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
以上。
Onlyrom 様
御回答ありがとうございました。
御指摘のようにSelectで定義しなくても
Copy & Paste はできるんですね !
Select文で使用するシート、セルを指示しないと
Copy & Paste が出来ないのではないかと
思ってました。確かにOnlyromさんの言われる
最後の2行だとSelectの指定も無いし、
文も節約されてすっきりしますね !
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
EXCEL/VBAで、自分のPCだけエラ...
-
実行時エラー3001「引数が間違...
-
ADODB.Streamを使用してUTF-8を...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
【マクロ】エラー【#DIV/0!】が...
-
実行時エラー48発生時のDLL特定...
-
VB6+SQL サーバー 2000 で 実行...
-
C言語 mallocのエラーに関する質問
-
OLEDB.NETで接続できない
-
職場から目的地までの距離集計
-
エラー1004 PDFの保存ができま...
-
1列目の何行目に検索文字がある...
-
なぜこんな初歩的なVBAのIf文で...
-
EXCEL VBAマクロ中断でデバッグ...
-
カーソルオープンでエラー(ORA...
-
DataGridView からの値取得に関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
実行時エラー48発生時のDLL特定...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー3001「引数が間違...
-
EXCEL/VBAで、自分のPCだけエラ...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAのエラー発生場所をメッセー...
-
ADODB.Streamを使用してUTF-8を...
-
【Excel VBA】マクロをボタンに...
-
OLEDB.NETで接続できない
-
なぜエラーになるのでしょうか...
-
INSERT INTOステートメント構文...
-
Outlook.ApplicationをCreateOb...
おすすめ情報