[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA シートのコピーでエラー』(SAYO)
VBA初心者です。
次の構文で、
★部 Sheets("Sheet2").Range(Cells(1, "A"), Cells(5, "B")).Copy
がエラーになるのは、何故でしょうか?
Sub TEST()
Sheets("Sheet1").Select Sheets("Sheet1").Range(Cells(1, "A"), Cells(5, "B")).Copy ★ Sheets("Sheet2").Range(Cells(1, "A"), Cells(5, "B")).Copy End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Cells(1, "A") という書き方ではセルの親のシートを省略した書き方となる。 VBAでセルの親が省略されている場合、シートモジュールの場合はそのシート、標準モジュールやWorkSheetモジュールの場合は その時にアクティブなシートが親とみなされる。
なのでSheet1のシートモジュールに記入されている場合、標準モジュールでSheet1がアクティブシートの場合、 Sheets("Sheet2").Range(Cells(1, "A"), Cells(5, "B")).Copy は Sheets("Sheet2").Range(Sheets("Sheet1").Cells(1, "A"), Sheets("Sheet1").Cells(5, "B")).Copy とみなされてシートとセルが矛盾するためにエラーとなる。
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, "A"), Sheets("Sheet2").Cells(5, "B")).Copy または With Sheets("Sheet2") .Range(.Cells(1, "A"), .Cells(5, "B")).Copy End With として見てくれ。 (ねむねむ) 2015/03/03(火) 16:13
横から失礼します。
「シートモジュールの場合はそのシート、標準モジュールやWorkSheetモジュールの場合は その時にアクティブなシートが親とみなされる。」
これは
「シートモジュールの場合はそのシート、標準モジュールやユーザーフォームモジュールの場合は その時にアクティブなシートが親とみなされる。」
ですかね?
(β) 2015/03/03(火) 17:53
おっと大きな間違いをしてた。
>WorkSheetモジュール これはThisWorkbookモジュールの間違いだった。 すまない。
ユーザーフォームモジュールも考えると「シートモジュール以外」でいいのかもしれない。 (ねむねむ) 2015/03/03(火) 19:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.