teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

使用用途の追記

2016/05/10 07:00

投稿

forestfield
forestfield

スコア14

title CHANGED
File without changes
body CHANGED
@@ -37,4 +37,6 @@
37
37
  End Sub
38
38
 
39
39
  ```
40
- Workbook_SheetDeactivateの時点でシートは既に切り替わっていて、切替前画面をアクティブにしなければScrollRow、ScrollColumnは取得できず、ScreenUpdatingをFalseにしてもActivateでの画面切替は制御出来ていないようです。
40
+ Workbook_SheetDeactivateの時点でシートは既に切り替わっていて、切替前画面をアクティブにしなければScrollRow、ScrollColumnは取得できず、ScreenUpdatingをFalseにしてもActivateでの画面切替は制御出来ていないようです。
41
+
42
+ 使用用途は複数のExcelファイルをシート別に読み込み、差分を色分けして分かるようにする機能を作ったので、シートを切り替えた時にページ移動しなくて済むようにしたいです。

1

コードにコメントを挿入

2016/05/10 07:00

投稿

forestfield
forestfield

スコア14

title CHANGED
File without changes
body CHANGED
@@ -3,25 +3,35 @@
3
3
  どうすればよいでしょうか。
4
4
 
5
5
  ```ここに言語を入力
6
+ 'シートがアクティブになったとき
6
7
  Private Sub Workbook_SheetActivate(ByVal Sh As Object)
8
+ '描画・イベント制限
7
9
  Application.ScreenUpdating = False
8
10
  Application.EnableEvents = False
9
11
 
12
+ '切替前シートのスクロール位置に移動
10
13
  Application.Goto Sh.Cells(sBar_row, sBar_col), True
11
14
 
15
+ '描画・イベント制限解除
12
16
  Application.EnableEvents = True
13
17
  Application.ScreenUpdating = True
14
18
  End Sub
15
19
 
16
20
 
21
+ 'シートが非アクティブになったとき
17
22
  Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
23
+ '描画・イベント制限
18
24
  Application.ScreenUpdating = False
19
25
  Application.EnableEvents = False
20
26
 
27
+ '切替前シートをアクティブにする
21
28
  Worksheets(Sh.Name).Activate
29
+
30
+ 'スクロール位置を取得
22
31
  sBar_row = ActiveWindow.ScrollRow
23
32
  sBar_col = ActiveWindow.ScrollColumn
24
33
 
34
+ '描画・イベント制限解除
25
35
  Application.EnableEvents = True
26
36
  Application.ScreenUpdating = True
27
37
  End Sub