回答編集履歴

2

変更

2015/10/02 06:31

投稿

kaputaros
kaputaros

スコア1844

test CHANGED
@@ -16,7 +16,27 @@
16
16
 
17
17
  ---
18
18
 
19
+ 追記:
20
+
21
+ 「各ボタンを押す回数=subを実行する回数」
22
+
23
+ だと解釈しているので、for文を使わないというのは、Row()で指定するときに
24
+
25
+ Row(○:△) のように指定すればいいと思ったからです。
26
+
27
+ (※○と△は数値です)
28
+
29
+
30
+
31
+ > 隠す行の範囲の上限は決まっていて、79から108行です。
32
+
33
+ ということなので、計算してがっつり指定して非表示にしたほうが効率もいいし
34
+
35
+ 処理も早いと思います。
36
+
37
+
38
+
19
- 追記:for文なしのものをつくってみました↓
39
+ for文なしつくってみました↓
20
40
 
21
41
  ```
22
42
 

1

追加

2015/10/02 06:31

投稿

kaputaros
kaputaros

スコア1844

test CHANGED
@@ -1,8 +1,4 @@
1
- 全部隠したあとに、前の行までを表示してあげるのはどうでしょう??
2
-
3
-
4
-
5
- あと、for文でまわしてしまうと、全部を対象にして実施してしまうので、
1
+ for文でまわしてしまうと、全部を対象にして実施してしまうので、
6
2
 
7
3
  結局全部非表示にしてしまっているのではないかと思います。
8
4
 
@@ -15,3 +11,71 @@
15
11
  変数をsubの外側に宣言してあげれば、値を保ち続けてくれるので、
16
12
 
17
13
  その値をsubの中で参照して計算すればいいと思います。
14
+
15
+
16
+
17
+ ---
18
+
19
+ 追記:for文なしのものをつくってみました↓
20
+
21
+ ```
22
+
23
+ Private Const max As Integer = 108
24
+
25
+ Private Const min As Integer = 79
26
+
27
+ Private Const limits As Integer = 30 'max-min+1
28
+
29
+
30
+
31
+ Private hideRowsCnt As Integer '消している行数
32
+
33
+
34
+
35
+ '「-」ボタンから実行
36
+
37
+ Sub minus()
38
+
39
+ '消している行数分非表示にする
40
+
41
+ Dim hideStart As Integer
42
+
43
+
44
+
45
+ hideStart = max - hideRowsCnt
46
+
47
+ Rows(hideStart & ":" & max).Hidden = True
48
+
49
+
50
+
51
+ '消している行数を1増やす
52
+
53
+ hideRowsCnt = hideRowsCnt + 1
54
+
55
+
56
+
57
+ '範囲チェック
58
+
59
+ If hideRowsCnt > limits Then
60
+
61
+ hideRowsCnt = limits
62
+
63
+ End If
64
+
65
+ End Sub
66
+
67
+ ```
68
+
69
+ minus()を「-」ボタンから呼び出します。
70
+
71
+ 押された分実行されるので、グローバル変数の値が変わります。
72
+
73
+ 「+」ボタンから呼び出すほうも、同じ感じで作れると思います。
74
+
75
+
76
+
77
+ いかがでしょう?
78
+
79
+ もちろん、範囲が決まってなくて・・・という場合でしたら、
80
+
81
+ for文でまわして一番最後の行から探すとかしなくてはならないかと思います。