アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA勉強中です。
初歩的な質問ですが、Rangeを使ったコピー動作を命令する際、

opwbk.Worksheets(2).Range("A1:B31").Copy

上記は可能です。
こちらのRangeの範囲指定をCellsで行いたいのですが、単純に
opwbk.Worksheets(2).Range(Cells(1, 1), Cells(31, 2)).Copy
とすると

「実行時エラー 1004 アプリケーション定義またはオブジェクト定義のエラー」
になる原因はどこでしょうか?

A 回答 (2件)

Cells(1, 1)はオブジェクトを指します


"A1:B31"は範囲(アドレス)を指しますので

opwbk.Worksheets(2).Range(?.Cells(1, 1), ?.Cells(31, 2)).Copy
.Range  .Cells(1, 1) の前には ActiveSheetが省略されています
?部分を明示してください
(シートオブジェクトを跨いだ範囲指定はできません)

opwbk.Worksheets(2).Range(opwbk.Worksheets(2).Cells(1, 1), opwbk.Worksheets(2).Cells(31, 2)).Copy 

With opwbk.Worksheets(2)
.Range(.Cells(1, 1), .Cells(31, 2)).Copy ・・・
End With
などなど
    • good
    • 0
この回答へのお礼

丁寧で分かりやすい解説ありがとうございました。
Rangeの前の明示が必要なのですね。
Wish構文を活用して目的の動作になりました。

お礼日時:2023/02/10 19:44

Cells(1, 1), Cells(31, 2)がどのシートのセルなのか解らないでしょ?



明示するか、事前にset a as・・・・・とかでaを目的シートに結び付けて
a.Cells(1, 1),a. Cells(31, 2)にする。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2023/02/10 19:45

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