インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

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じゃないから返さないよね・・・(ノД`)・゜・。

書き方の問題じゃないなぁ( ´ー`)