質問 |
||
| QNo.4008866 | VBAでの値のコピーのエラーについて | |
|---|---|---|
| 質問者:tomiohba |
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行おきに貼り付けたいのでインデックスとして 使用しています)。 どうか、宜しく御教示下さいますようお願い致します。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/09 12:07 |
||
回答良回答10pt |
|
| ANo.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 | |
| 種類:回答 どんな人:一般人 自信:自信あり |
|
| 回答日時: 08/05/09 15:10 |
|
| |
| この回答へのお礼 | Onlyrom 様 御回答ありがとうございました。 御指摘のようにSelectで定義しなくても Copy & Paste はできるんですね ! Select文で使用するシート、セルを指示しないと Copy & Paste が出来ないのではないかと 思ってました。確かにOnlyromさんの言われる 最後の2行だとSelectの指定も無いし、 文も節約されてすっきりしますね ! 有難うございました。 |
回答良回答20pt |
|
| ANo.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 | |
| 種類:アドバイス どんな人:一般人 自信:自信あり |
|
| 回答日時: 08/05/09 12:26 |
|
| |
| この回答へのお礼 | 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日間、ずっとこれで悩んでいたので 大助かりです。有難うございました ! |