質問編集履歴
2
使用用途の追記
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
コードにコメントを挿入
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
|