Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows XP Home Edition : Excel 2002)
非表示シートを再表示する方法
投稿日時: 18/02/18 16:42:12
投稿者: ISBSGR

毎度お世話になります。
ブックを保存する時、Forステートメントを使って、1シートを残しシートを非表示にしていますが、シート数が多いので、開く時の再表示に画面が激しく揺れます。結果は問題ないのですが、普通のブックを開く感覚で再表示できる方法は無いでしょうか。シートを配列に代入したらどうかとの感じですが、うまくいきません。

回答
投稿日時: 18/02/18 17:32:10
投稿者: simple

問題の所在がよくわからないのですが、
・ブックを保存する時、Forステートメントを使って、1シートを残しシートを非表示にしていますが、
・シート数が多いので、開く時の再表示に画面が激しく揺れます。
とのこと。
そもそも、
・保存するときに非表示にして、
・開いたときまた再表示する
目的は何でしょうか。

回答
投稿日時: 18/02/18 17:50:40
投稿者: WinArrow
投稿者のウェブサイトに移動

おそらく、「マクロ無効」で開いた対応の処理と推測します。
 
Application.ScreenUpdatingプロパティで制御する方法は如何でしょうか?
 
 
Application.ScreenUpdating = False
 ここにシート表示処理
Application.ScreenUpdating = True
  

回答
投稿日時: 18/02/19 10:46:20
投稿者: もこな2

対応としては、WinArrowさんのコメントのとおりだとおもうんですが、

引用:
再表示に画面が激しく揺れます。
っていうのが気になります。
違ってればよいのですけど、いちいち表示したシートをアクティブにして、メインシートをアクティブにしなおしてみたいな処理を繰り返してないでしょうか?
※実際のコードの提示があれば、もうちょっとアドバイスできることもあるかもしれませんが、情報が乏しいので推測での回答です。
 
引用:
シートを配列に代入したらどうかとの感じですが、うまくいきません。
ちょっとよくわかりませんが、何がどううまくいかないんでしょうか?
こちらもコードの提示や、具体的に〇〇というような動きを期待して、〇〇と記述したのに、〇〇となります。など状態を具体的に説明いただくと、アドバイスできることがあるかもしれません。

回答
投稿日時: 18/02/19 16:32:27
投稿者: mattuwan44

見せたくないシートは別ブックにしてはいかがでしょう?
 
ファイルを隠しファイルにしておけば、ぱっと見存在を気づきません。
その代りマクロブックだけを移動したら、マクロが動かなくなるだけでなく、
隠しファイルも紛失する可能性はありますが^^;

投稿日時: 18/02/20 01:03:54
投稿者: ISBSGR

皆さんありがとうございました。WinArrowさんご呈示の方法でバッチシでした。この記述は以前より承知はしていたものの、昔テストしたことがあって、効果がなかったので、思いつきませんでした。なお、目的はWinArrowさんご指摘の通りです。質問に書かなかったのは、説明が長くなってしまうので、煩わしいと考えたからです。なお、コード提示のご意見ですが、普通のForステートメントの記述でしかありませんが、配列に代入する方法は、色々やってみたけれど、うまくいかんかったということで、それらをいちいち提示しても意味がないと思います。逆に、旨い方法があればご教授いただければ幸いです。

回答
投稿日時: 18/02/20 01:38:38
投稿者: もこな2

ISBSGR さんの引用:
なお、コード提示のご意見ですが、普通のForステートメントの記述でしかありませんが、配列に代入する方法は、色々やってみたけれど、うまくいかんかったということで、それらをいちいち提示しても意味がないと思います。逆に、旨い方法があればご教授いただければ幸いです。
べつに、無理やり出せ〜っていうほどのことでもないですけど、似たようなことで悩まれてる方のヒントになるかもしれませんし、関係ないところでも、ヒントもらえたりするんで、可能なら提示したほうがいいとおもいますが・・・
 
あと、すっごいどうでもいいと思いますけど、「Forステートメント」 じゃなくて、「For...Next ステートメント」か「For Each...Next ステートメント」じゃないですかね。
配列に代入云々がうまくいかないって言ってるから、シートのインデックス番号を「For...Next ステートメント」で回してるんでしょうか・・・
 
まっどちらにせよ、質問者さんが満足してるならそれが一番だし、提示がない(=比較対象がない)から、他のやり方が旨い方法なのかわからない(というより、どの方法でやってるかわかんない)のでこれ以上コメントつけられないです。

回答
投稿日時: 18/02/20 14:19:48
投稿者: WinArrow
投稿者のウェブサイトに移動

>シートを配列に代入したらどうかとの感じですが
 
シート名を配列に入れ、作業グループ化して、一挙に表示させたい
ということだと推測しますが、
 
作業グループは、シートタブが表示されているものが対象です。
シートタブが表示されていないものを作業グループ化することはできない・・・・
(手操作でやってみればわかります。)
ので、配列に入れたところで、1シートづつ表示するしかないので、
配列に入れるのは無駄。

投稿日時: 18/02/20 15:36:52
投稿者: ISBSGR

WinArrowさんありがとうございます。配列に入れても一気にシートを表示できないんですね。無駄な作業をしてしまいました。これで閉じます。