VBA:選択行の表示・非表示をワンタッチで切り替えるマクロ
成績一覧表や通知票を作っていると、学年ごとに6種類作るのは面倒です。
私がよくやるのは、6年生のものを作っておいて、あとの学年は不要な行を非表示にして量産しています。
最後は紙に印刷するので、印刷されなければOKということ。
オートフィルターでも可能ですが、横に出る▼があまり好きではないので、マクロを組んでみました。また今回は書いてませんが、列方向にも対応させることができるので、
まあまあ便利です。(・・・自己満足(^^;)
右クリックメニューにも行列の表示非表示はありますが、ワンタッチでできるので、
システムとしては備えておくと案外便利なマクロです。
サンプルは、A列に●が入っている行の表示、非表示を切り替えできます。
For Next とFor Each の2種類を書いてみました。
順番に行を当たっていくFor Next よりも、
総当たりでA列を当たっていくFor Each の方が若干反応がいいです。
※説明については、できるだけ簡単に表現することにしています。
プロの方、ご了承ください(^-^;)
サンプルマクロです。標準モジュールで使用します。
↓
Option Explicit
Sub A列●の行を表示非表示for_next()
Dim i As Long
Dim r As Range '範囲で定義
'ActiveSheet.Unprotect’シート保護解除
For i = 1 To 100000 'データ行が100行までなら100
If Range("A" & i) = "●" Then
Set r = Range("A" & i).Rows
If r.Hidden = True Then
r.Hidden = False
ElseIf r.Hidden = False Then
r.Hidden = True
End If
End If
Next
'ActiveSheet.Protect’シート再保護
End Sub
-------------------------------------------------------------------
Sub A列●の行を表示非表示for_each()
'こちらの方が反応が速い。
Dim r As Range '範囲で定義
'ActiveSheet.Unprotect 'シート保護解除
For Each r In Range("A1:A100000") 'データ行が100行までなら”A1:A100”
If r = "●" Then
Set r = r.Rows
If r.Hidden = True Then
r.Hidden = False
ElseIf r.Hidden = False Then
r.Hidden = True
End If
End If
Next
'ActiveSheet.Protect 'シート再保護
End Sub
--------------------------------------------------------
↓サンプルシートです。
3連休最終日ですね。もう2月が終わっちゃう・・・。
では、また!