Worksheetのコピー
前回書いてみた通り,
Sub a() 'だめ Dim PWB As Workbook: Set PWB = Workbooks.Add() Dim PWS As Worksheets: Set PWS = ThisWorkbook.Worksheets(1).Copy(after:=PWB.Worksheets(PWB.Worksheets.Count)) End Sub Sub b() 'うまくいく Dim PWB As Workbook: Set PWB = Workbooks.Add() Dim PWS As Worksheet: ThisWorkbook.Worksheets(1).Copy after:=PWB.Worksheets(PWB.Worksheets.Count) Set PWS = ActiveSheet End Sub
PWSという変数に,シートのコピーを一気に入れたい。
たった一行の差なんですが,コピー直後は必ずコピーしたばかりのシートがアクティブになってるからという前提で書くbの書き方が嫌いです。
オブジェクトブラウザでみても
Sub Copy([Before], [After])
Excel.Worksheets のメンバー
と書いてあるから,ワークシートを返すのかなぁと思うので直接入れれそうに感じるんですがだめなようです。
何が悪いのかなぁ ( ´ー`)フゥー...
・・・
ここまで書いてて,もう一回オブジェクトブラウザ見て思った。
Addは
Function Add([Before], [After], [Count], [Type]) As Object
Excel.Worksheets のメンバー
Copyは
Sub Copy([Before], [After])
Excel.Worksheets のメンバー
Functionじゃないから返さないよね・・・(ノД`)・゜・。
書き方の問題じゃないなぁ( ´ー`)