Excel (VBA)

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

 
(Windows 10 Home : Microsoft 365)
シート表示
投稿日時: 22/08/26 16:47:17
投稿者: nob1122

マクロで作業を組んであります。マクロ実行中は、あるシートだけを表示させたいです。
 
具体的には、2つのシート「スタート」「表示」があり、マクロ実行中は、「表示」シートを表示させ、マクロ終了後に、「スタート」シートに戻りたいです。
 
よろしくお願いします。

回答
投稿日時: 22/08/26 16:52:59
投稿者: QooApp

素材となるソースコードがないので基本的な話だけ書いておきます。
 
'表示される
WorkSheets("シート名").Visible = xlSheetVisible
 
'表示されないけど手動で再表示など普通の操作ができる
WorkSheets("シート名").Visible = xlSheetHidden
 
'表示されず、手動の操作による存在の確認や、再表示の手動操作を受け付けない。
'ただし、VBでシート上のセルの値を操作するなどシート自体が消滅したりするような操作以外は受け付ける。
WorkSheets("シート名").Visible = xlSheetVeryHidden

回答
投稿日時: 22/08/26 16:55:20
投稿者: WinArrow
投稿者のウェブサイトに移動

確認です。
「表示」シートは、非表示になっているのですか?
 
それとも、「START」シートの後に隠れているのですか?
 

回答
投稿日時: 22/08/26 16:57:12
投稿者: QooApp

表示シートを処理実行中のみ表示とのことですが、
表示するだけで入力などを促さない場合、ただ描画処理を行うだけではあるが、
それ自体がVBの処理を重くする原因になることがあります。
 
意図的に画面更新を停止するコマンド
application.ScreenUpdate = False
を使用して描画を無効化(処理が完了するまでorTrueを入力するまで画面に変化が無くなるコマンド)するなど
普通は軽量化する方向に開発するのが一般的です。
 
ただ逐次結果を見たいこともあると思いますので必ずではありませんが、いったん考慮いただくのはありかもしれません?

回答
投稿日時: 22/08/26 16:59:08
投稿者: WinArrow
投稿者のウェブサイトに移動

特定シートを表示するコード

特定シートを前面にする
のでは、全く違うコードになります。

投稿日時: 22/08/26 17:50:59
投稿者: nob1122

回答ありがとうございます。
  
ファイル中に「スタート」「表示」以外に、複数のシートが存在します。
マクロ作業で、複数のシートを行ったり来たりする関係で、画面が落ち着きません。
そういうことで、マクロ作業中は、「表示」シートを画面に出したかったのです。
  
  
Sub 表示()
sheets("表示").select
Application.ScreenUpdating = False
マクロ作業
Application.ScreenUpdating = True
sheets("スタート").select
end sub
  
上記で組んでみたのですが、「スタート」シートから「表示」シートに移動せずに終了してしまいます。

回答
投稿日時: 22/08/26 18:17:49
投稿者: WinArrow
投稿者のウェブサイトに移動

nob1122 さんの引用:
回答ありがとうございます。
  
ファイル中に「スタート」「表示」以外に、複数のシートが存在します。
マクロ作業で、複数のシートを行ったり来たりする関係で、画面が落ち着きません。
そういうことで、マクロ作業中は、「表示」シートを画面に出したかったのです。
  
  
Sub 表示()
sheets("表示").select
Application.ScreenUpdating = False
マクロ作業
Application.ScreenUpdating = True
sheets("スタート").select
end sub
  
上記で組んでみたのですが、「スタート」シートから「表示」シートに移動せずに終了してしまいます。

 
1つは、ステップ実行して確認してみましょう。
 
 
コードの中で確認する方法
Msgbox Activesheet.Name
を、適宜挿入してみましょう。

投稿日時: 22/08/29 09:37:02
投稿者: nob1122

Msgbox Activesheet.Nameの提案、ありがとうございました。
 
解決しました。