for文でまわしてしまうと、全部を対象にして実施してしまうので、
結局全部非表示にしてしまっているのではないかと思います。
for文は不要だと思います。
-ボタンが押された時点で一番下にある行が非表示になっていればいいのですよね?
変数をsubの外側に宣言してあげれば、値を保ち続けてくれるので、
その値をsubの中で参照して計算すればいいと思います。
追記:
「各ボタンを押す回数=subを実行する回数」
だと解釈しているので、for文を使わないというのは、Row()で指定するときに
Row(○:△) のように指定すればいいと思ったからです。
(※○と△は数値です)
隠す行の範囲の上限は決まっていて、79から108行です。
ということなので、計算してがっつり指定して非表示にしたほうが効率もいいし
処理も早いと思います。
for文なしでつくってみました↓
Private Const max As Integer = 108
Private Const min As Integer = 79
Private Const limits As Integer = 30 'max-min+1
Private hideRowsCnt As Integer '消している行数
'「-」ボタンから実行
Sub minus()
'消している行数分非表示にする
Dim hideStart As Integer
hideStart = max - hideRowsCnt
Rows(hideStart & ":" & max).Hidden = True
'消している行数を1増やす
hideRowsCnt = hideRowsCnt + 1
'範囲チェック
If hideRowsCnt > limits Then
hideRowsCnt = limits
End If
End Sub
minus()を「-」ボタンから呼び出します。
押された分実行されるので、グローバル変数の値が変わります。
「+」ボタンから呼び出すほうも、同じ感じで作れると思います。
いかがでしょう?
もちろん、範囲が決まってなくて・・・という場合でしたら、
for文でまわして一番最後の行から探すとかしなくてはならないかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/02 04:13
2015/10/02 06:29 編集
2015/10/02 06:34
2015/10/02 07:21
2015/10/02 07:25
2015/10/04 11:03
2015/10/05 01:29