質問編集履歴

2

使用用途の追記

2016/05/10 07:00

投稿

forestfield
forestfield

スコア14

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

1

コードにコメントを挿入

2016/05/10 07:00

投稿

forestfield
forestfield

スコア14

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
  ```ここに言語を入力
10
10
 
11
+ 'シートがアクティブになったとき
12
+
11
13
  Private Sub Workbook_SheetActivate(ByVal Sh As Object)
14
+
15
+ '描画・イベント制限
12
16
 
13
17
  Application.ScreenUpdating = False
14
18
 
@@ -16,9 +20,13 @@
16
20
 
17
21
 
18
22
 
23
+ '切替前シートのスクロール位置に移動
24
+
19
25
  Application.Goto Sh.Cells(sBar_row, sBar_col), True
20
26
 
21
27
 
28
+
29
+ '描画・イベント制限解除
22
30
 
23
31
  Application.EnableEvents = True
24
32
 
@@ -30,7 +38,11 @@
30
38
 
31
39
 
32
40
 
41
+ 'シートが非アクティブになったとき
42
+
33
43
  Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
44
+
45
+ '描画・イベント制限
34
46
 
35
47
  Application.ScreenUpdating = False
36
48
 
@@ -38,13 +50,21 @@
38
50
 
39
51
 
40
52
 
53
+ '切替前シートをアクティブにする
54
+
41
55
  Worksheets(Sh.Name).Activate
56
+
57
+
58
+
59
+ 'スクロール位置を取得
42
60
 
43
61
  sBar_row = ActiveWindow.ScrollRow
44
62
 
45
63
  sBar_col = ActiveWindow.ScrollColumn
46
64
 
47
65
 
66
+
67
+ '描画・イベント制限解除
48
68
 
49
69
  Application.EnableEvents = True
50
70