シート1
シート2
シート3
ある状態から
シート3をコピー追加します。
その際、下記のコードではメッセージボックスには4が表示されます。
やりたいことは、シートコピー時のイベントを捉えることです。
シートのコピー追加をするということは、シートが増えるということ。
つまり、
SheetActivateが実行される前のシートの数と
SheetActivateが実行された後のシートの数
この2つが一致しなければ、それはコピーしたということになります。
SheetActivateなんですが一致すれば何も処理はしない。
vba
1Sub Workbook_SheetActivate(ByVal Sh As Object) 2 If Worksheets.Count > 0 Then 3 MsgBox Worksheets.Count 4 End If 5End Sub
本題は、
SheetActivateが実行される前のシートの数
これはどうやって取得することができるでしょうか?
コードの0にあたる部分がそれなんですが、どうすれば良いでしょうか。
また、本題で、シートの数を取得するタイミングも関わってくると思いますが、そのタイミングが最適でしょうか。
追記:
単純に
If Worksheets.Count > (Worksheets.Count-1) Then
ではダメなような、、、
シートはまとめて追加する場合もあるので、
やはりシートコピー前のシート数を取得しないと、、、
もし、If Worksheets.Count > (Worksheets.Count-1) Thenでやるなら1の部分は追加したシートの数にしなくては、、、
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。