| 
    
     |  | 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
 
 ということで、混乱させてしまったようですみません。
 
 
 |  |