Excel-VBA特定の行や列を表示・非表示にする

パソコン難しい Excel-VBA
スポンサーリンク

こんにちは、とりっぷぼうるです。

元々エクセルとは全く縁のない生活をしていましたが、人員不足などで少しでもデータ入力作業や集計作業を効率化するしか方法が無く、仕方がなくエクセルに取り組み始まました。

なぜならば、大きな会社ならば専用ソフトやクラウド上でデータ集計や管理を行うのでしょうけど、小さなところではそのようなお金もないのでエクセルで解決するしか方法が無いのですよね。

このような理由からエクセルに取り組み始めましたので、当然ながらエクセルの専門知識もなく、学校に通うこともできずにただ単にエクセルの書籍とにらめっこしながら取り組んでいます。

波乗りアヒル
波乗りアヒル

でも書籍のままだと実用的でないことが多く、VBAコードを組み合わせてみたら動いた!という実用例・体験談を書いています。

Excel-VBAの専門学校通学や・資格があるわけではありませんので、あくまでエラーにならずに動いてくれているVBAコードになりますので、掲載のVBAコードが同じように動く保証はできません。
実際に動いているエクセルは2009と2016です。

行や列の表示・非表示をセルの値が変わっても対応させる

ボウリングのリーグ成績表でもエクセルVBAを使っていますが、お客様に渡すリーグ個人成績一覧表には印刷時必要のない行や列を非表示にして印刷しませんか

そんな時、印刷する前に毎回非表示したい列で右クリックして非表示選んだりするの面倒ですよね。

また、「ボウリング成績表印刷設定方法~LTB個人リーグ編」でも設定していますが、参加人数に応じて行を自動的に非表示にしています。

ボウリング成績表印刷設定方法~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

コメント