エクセル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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
Count Ifのセルの範囲指定に変...
-
EXCELのSheet番号って変更でき...
-
100万件越えCSVから条件を満た...
-
Unionでの他のシートの参照につ...
-
VBA 空白行に転記する
-
複数シートの複数列に入力され...
-
Changeイベントで複数セルへの...
-
エクセル 複数シートの同一セ...
-
Excel VBA オートフィルターで...
-
RemoveDuplicatesメソッドにつ...
-
VBAで変数の数/変数名を動的に...
-
グラフマクロで系列を変数にす...
-
VBA 最終行を選んだシートにコ...
-
VBAでEXCELから固定長...
-
VBA別シートの最終行の次行へ転...
-
ExcelのVBマクロを、バックグラ...
-
【VBA】特定の条件でセルをコピー
-
VBAコードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
【VBA】特定の条件でセルをコピー
-
Count Ifのセルの範囲指定に変...
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
VBAコードについて
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
Excel2013で切り取り禁止
-
グラフマクロで系列を変数にす...
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
Unionでの他のシートの参照につ...
-
Excel VBA オートフィルターで...
-
アクセスからエクセルへ出力時...
おすすめ情報