|
Yuji さん、こんばんわ。
>私の書き方が悪かったですが、lWsEをActivateにするのは問題ありませんが、
>lWsEをActivateにしてしまうと
>With .Range(.Cells(Rmax + 2, 1), .Cells(Rmax + 21, 10)) ←この行
↑
実は、最初の回答(=過去からの転記)ではRangeの前の「.」(Withに関連していますというサイン)が抜けていました(#61257で気づいて訂正)。
標準モジュールに記述する場合、親(ワークシートオブジェクト)を省略した場合は親がActiveSheet(ヘルプに書いてあります)なので、例のようにActiveSheetを対象としている限りエラーにはなりませんでした。
今回CommandButtonでの実行ということでシートモジュールに記述してされていますが、その場合は親を省略するとコードを記述したシートが親になります。
なので、
>With Range(.Cells(Rmax + 2, 1), .Cells(Rmax + 21, 10))
は省略せずに書くと
With Sheet1.Range(Sheet2.Cells(Rmax + 2, 1), Sheet2.Cells(Rmax + 21, 10))
つまり、外と中で別シートの範囲を見ているのでエラーになってしまいます。
Withの内側でメッセージを出して確認してみてください。
With ActiveSheet
'↓これを追加してみてください。MsgBoxで違いがわかると思います。
MsgBox Cells(1).Address(external:=True), vbInformation, .Cells(1).Address(external:=True)
'一つあけて下
With .Range(.Cells(Rmax + 2, 1), .Cells(Rmax + 21, 10)) '大きさは適当
Set co = lWsE.ChartObjects.Add(.Left, .Top, .Width, .Height)
End With
End With
ということで、混乱させてしまったようですみません。
|
|