目次
行や列の表示・非表示をセルの値が変わっても対応させる
ボウリングのリーグ成績表でもエクセルVBAを使っていますが、お客様に渡すリーグ個人成績一覧表には印刷時必要のない行や列を非表示にして印刷しませんか?
そんな時、印刷する前に毎回非表示したい列で右クリックして非表示選んだりするの面倒ですよね。
また、「ボウリング成績表印刷設定方法~LTB個人リーグ編」でも設定していますが、参加人数に応じて行を自動的に非表示にしています。
https://tripbowl.net/manual-print-ltb/
波乗りアヒル
どうやって自動的に表示・非表示するの?

Hiddenプロパティを使うのよ!

行や列を表示・非表示するHiddenプロパティを抑えておこう
決まった1行を非表示にする
例えば3行目を非表示にするならば・・・
Rows(3).Hidden = True
たったこれだけです。
決まった範囲の行を非表示にする
例えば3行目~5行目を非表示にするならば・・・
Rows(“3,5”).Hidden = True
たったこれだけです。
決まった1行を表示にする
例えば3行目を表示にするならば・・・
Rows(3).Hidden = False
たったこれだけです。
決まった範囲の行を表示にする
例えば3行目~5行目を表示にするならば・・・
Rows(“3,5”).Hidden = False
たったこれだけです。
条件に応じて行を非表示にする
これは先ほどのボウリングのリーグ成績表で使用していますが、最大40名までの参加者分の成績表が作れるようにしているので、必ずしも40名いるわけではありません。
その為、Hiddenプロパティを使わないで非表示にもしないと、成績表に空欄(選手未登録)がある表が出来上がってしまいます。
参加者が30名ならば、残り10名分を非表示して空いたスペースをなくすために、文字や行を大きくしています。
実際に使っているExcel-VBAコードです。
Private Sub CommandButton3_Click()
Dim row As Long
Dim i As Long
row = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To row
If Cells(i, 26) = 0 Then Rows(i).Hidden = True
Next i
Select Case Worksheets(“RESULT”).Range(“AA1”).Value
Case Is <= 25
Range(“3:27”).RowHeight = 38
Range(“A3:T42”).Font.Size = 17
Case Is = 26
Range(“3:28”).RowHeight = 36
Range(“A3:T42”).Font.Size = 16
Case Is = 27
Range(“3:29”).RowHeight = 35
Range(“A3:T42”).Font.Size = 16
Case Is = 28
Range(“3:30”).RowHeight = 33
Range(“A3:T42”).Font.Size = 16
Case Is = 29
Range(“3:31”).RowHeight = 32
Range(“A3:T42”).Font.Size = 15
Case Is = 30
Range(“3:32”).RowHeight = 31
Range(“A3:T42”).Font.Size = 15
Case Is = 31
Range(“3:33”).RowHeight = 30
Range(“A3:T42”).Font.Size = 15
Case Is = 32
Range(“3:34”).RowHeight = 29
Range(“A3:T42”).Font.Size = 15
Case Is = 33
Range(“3:35”).RowHeight = 28
Range(“A3:T42”).Font.Size = 15
Case Is = 34
Range(“3:36”).RowHeight = 27
Range(“A3:T42”).Font.Size = 14
Case Is = 35
Range(“3:37”).RowHeight = 26
Range(“A3:T42”).Font.Size = 14
Case Is = 36
Range(“3:38”).RowHeight = 25
Range(“A3:T42”).Font.Size = 14
Case Is = 37
Range(“3:39”).RowHeight = 25
Range(“A3:T42”).Font.Size = 14
Case Is >= 38
Range(“3:40”).RowHeight = 23
Range(“A3:T42”).Font.Size = 13
End Select
End Sub
Dim row As Long
Dim i As Long
row = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To row
If Cells(i, 26) = 0 Then Rows(i).Hidden = True
Next i
Select Case Worksheets(“RESULT”).Range(“AA1”).Value
Case Is <= 25
Range(“3:27”).RowHeight = 38
Range(“A3:T42”).Font.Size = 17
Case Is = 26
Range(“3:28”).RowHeight = 36
Range(“A3:T42”).Font.Size = 16
Case Is = 27
Range(“3:29”).RowHeight = 35
Range(“A3:T42”).Font.Size = 16
Case Is = 28
Range(“3:30”).RowHeight = 33
Range(“A3:T42”).Font.Size = 16
Case Is = 29
Range(“3:31”).RowHeight = 32
Range(“A3:T42”).Font.Size = 15
Case Is = 30
Range(“3:32”).RowHeight = 31
Range(“A3:T42”).Font.Size = 15
Case Is = 31
Range(“3:33”).RowHeight = 30
Range(“A3:T42”).Font.Size = 15
Case Is = 32
Range(“3:34”).RowHeight = 29
Range(“A3:T42”).Font.Size = 15
Case Is = 33
Range(“3:35”).RowHeight = 28
Range(“A3:T42”).Font.Size = 15
Case Is = 34
Range(“3:36”).RowHeight = 27
Range(“A3:T42”).Font.Size = 14
Case Is = 35
Range(“3:37”).RowHeight = 26
Range(“A3:T42”).Font.Size = 14
Case Is = 36
Range(“3:38”).RowHeight = 25
Range(“A3:T42”).Font.Size = 14
Case Is = 37
Range(“3:39”).RowHeight = 25
Range(“A3:T42”).Font.Size = 14
Case Is >= 38
Range(“3:40”).RowHeight = 23
Range(“A3:T42”).Font.Size = 13
End Select
End Sub

波乗りアヒル
Excel-VBAを使えば数分かかる作業がたったの1秒で終了しますよ!