マクロを記録しているブック(book1)のsheet(1)に、
別ブック(book2)のsheet(2)の指定範囲の数値をコピーしたいです。
直前の操作では、book2のsheet(1)がアクティブになっています。(別の操作で使用)
.value=.valueではエラーになってしまいます。(パターン1)
cellsはアクティブシートに対する操作とどこかで見たため、
ブック、シートから記述してもうまくいきません。(パターン2)
アクティブシートを切り替えするとうまくいきました。(パターン3)
rangeの中にcellsを使用しているのは、選択範囲を変更する変数を入れたいためです。
シート切り替えで処理速度を落としているように感じられるため、
可能ならパターン1、2のような.valueでつなぐ形式にしたいと考えており、
ご教示頂けましたら幸いです。
dim book1 as workbook
dim book2 as workbook
dim sh11 as worksheet
dim sh21 as worksheet
dim sh22 as worksheet
set book1=thisworkbook
application.sheetsinnewworkbook=2
set book2=workbooks.add
set sh11=book1.sheet(1)
set sh21=book2.sheet(1)
set sh22=book2.sheet(2)
'パターン1、エラー
book1.sh11.range(cells(1,2),cells(100,9)).value _
=book2.sh22.range(cells(1,2),cells(100,9)).value
'パターン2、エラー
book1.sh11.range(book1.sh11.cells(1,2),book1.sh11.cells(100,9)).value _
=book2.sh22.range(book2.sh22.cells(1,2),book2.sh22.cells(100,9)).value
'パターン3、実行可能
book2.sh22.activate
book2.sh22.range(cells(1,2),cells(100,9)).copy
book1.sh11.activate
book1.sh11.range(cells(1,2),cells(100,9)).pastespecial(xlpastevalues)
application.cutcopymode=false
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/18 14:07