Excelが大好きだ!

Excel大好き経理マンがExcelの事を書き綴っていきます。


スポンサードリンク

CopyはWorkhsheetの表示状態によってエラーになる

雛形シートを非表示にしておいて、必要時にコピーして利用するようにすることがあるんだけど、今回エラーに遭遇してしまったので備忘録。

コピーはシートの表示状態に左右される

このようなシートを用意した。

f:id:ExcelLover:20210619125051j:plain


実際にシートの状態を確認するとこの様になっている。

f:id:ExcelLover:20210619125111j:plain

Visibleプロパティ

Visibleプロパティはワークシートが表示されるかどうかを設定します。

各シートのVisibleプロパティを下記のように設定している。

シート名 Visibleプロパティ
ws表示 xlSheetVisible
ws非表示 xlSheetHidden
wsとても非表示 xlSheetVeryHidden


Visibleプロパティのそれぞれの意味は下記の通り。

Visibleプロパティ 内容
xlSheetVisible シートを表示します
xlSheetHidden ユーザーがメニューで再表示できるワークシートを非表示にします。
xlSheetVeryHidden オブジェクトは非表示になります。このプロパティに再び xlSheetVisible を設定しない限り、オブジェクトは表示されません。また、ユーザー側でオブジェクトを表示することはできません。

docs.microsoft.com


実験のために次のようなコードを作成した。

Sub VisibleCopyTest()
     ws表示.Copy , Worksheets(Worksheets.Count)
     ws非表示.Copy , Worksheets(Worksheets.Count)
     wsとても非表示.Copy , Worksheets(Worksheets.Count)
End Sub

それぞれのシートを一番右端にコピーするコードです。


早速動かしてみます。

f:id:ExcelLover:20210619125214g:plain

「表示シート」と「非表示シート」はコピーできますが、「とても非表示シート」はコピーメソッドが失敗します。

xlSheetVeryHidden時のコピー対応法

この様な場合はVisibleプロパティをxlSheetVeryHiddenからxlSheetVisibleやxlSheetHiddenに変更する必要があります。

f:id:ExcelLover:20210619125241g:plain

コード中でVisibleプロパティを一旦xlSheetVisibleに変更することでコピーすることが出来ました。

コピー後にVisibleプロパティをxlSheetVeryHiddenに戻しています。

雑感

今までも同じように雛形シートを非表示にしていたのにエラーになっていなかったのはxlSheetHiddenを使用していたのかな。

自分の中でコードを書くルールが定まっていないので毎回毎回思いつきで書いているのがわかりますね。