
エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。
下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。
他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。
よろしくお願いします。
sub test()
Dim ThisBook As Workbook
Dim Workbook2 As Workbook
'マクロを実行しているワークブック
Set ThisBook = ThisWorkbook
'他のワークブック
Set Workbook2 = Workbooks("test11.xlsx") '
'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(1)だめ
'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK
'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ
'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value '(4)だめ
'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value '(5) ok
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ブック,シートを指定していないrangeやcellsは,いずれも現在のアクティブシートのそのセルと指定されます。
結果してrangeはあっちのシートなのに,中のcellsがこっちの(アクティブな)シートのように不整合していて,よく失敗します。
sub 作成例()
’たとえばこちらをアクティブにしてみると
workbook2.activate
workbook2.worksheets(1).select
with thisworkbook.worksheets(1)
’↓ ↓アクティブでないシートのrangeやcellsの指定を漏れなく行う
.range(.cells(1, 1), .cells(2,2)).value = range(cells(1,1), cells(2,2)).value
end with
end sub
No.1
- 回答日時:
(1)は以下の様にします。
ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Workbook2.Worksheets(1).Cells(1, 1), Workbook2.Worksheets(1).Cells(2, 2)).Value
長いので、Withを使い簡略化するとよいです。
With Workbook2.Worksheets(1)
ThisBook.Worksheets(1).Range("A1:B2").Value = .Range(.Cells(1, 1), .Cells(2, 2)).Value
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
Count Ifのセルの範囲指定に変...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
Excel2013で切り取り禁止
-
VBAコードについて
-
アクセスからエクセルへ出力時...
-
VBAでEXCELから固定長...
-
VBAで質問ですが、皆さんはどの...
-
Unionでの他のシートの参照につ...
-
VBA 別ブックからの転記の高速...
-
Excelで横書き50行の漢字テス...
-
Changeイベントで複数セルへの...
-
VBA別シートの最終行の次行へ転...
-
VBA sum ワークシートChange
-
Excel UserForm の表示位置
-
【マクロ】実行時エラー '424':...
-
「段」と「行」の違いがよくわ...
-
Excel VBAでのWorksheet_Change...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
Count Ifのセルの範囲指定に変...
-
VBA別シートの最終行の次行へ転...
-
楽天RSSからエクセルVBAを使用...
-
100万件越えCSVから条件を満た...
-
VBAで変数の数/変数名を動的に...
-
Changeイベントで複数セルへの...
-
アクセスからエクセルへ出力時...
-
VBAでEXCELから固定長...
-
ExcelのVBマクロを、バックグラ...
-
VBA 別ブックからの転記の高速...
-
Excel VBA オートフィルターで...
-
【VBA】データを各シートに自動...
-
複数シートの複数列に入力され...
-
グラフマクロで系列を変数にす...
-
Unionでの他のシートの参照につ...
-
Excel2013で切り取り禁止
おすすめ情報