目次
1.使用例① 列の非表示
1.サンプル
以下のようなセルのシートがあったとします。
2.Functionモジュールの実行例
以下は、値の入っていない列を非表示にする引数の指定例です。
列方向は、アルファベットでも列番号でも指定することができ、スペース区切りで複数指定することができます。
引数は、必ずダブルクォテーション""で囲った文字列で指定して下さい。
Sub main()
FC_HiddenCell hiddenColmuns:="C:D 7 10:12"
End Sub
3.実行結果
以下のように、上記の実行例で指定した列が非表示になっています。
2.使用例② 行と列の非表示
1.サンプル
使用例①と同じサンプルを使用します。
2.Functionモジュールの実行例
使用例①に対して、さらに、行方向の非表示も追加した例が以下になります。
行方向なので、アルファベットでの記述は無いのですが、必ず、ダブルクォテーション""で囲った文字列で指定して下さい。
Sub main()
FC_HiddenCell hiddenRows:="3 5:7 11:12", hiddenColmuns:="C:D 7 10:12"
End Sub
3.実行結果
以下のように、列方向だけでなく、行方向も非表示になっています。
3.使用例③ 行と列の再表示
1.サンプル
使用例②の実行結果を用いて、行と列が非表示になっているセルを再表示します。
2.Functionモジュールの実行例
以下のように、引数「hidden:=False」を追加することで、非表示になっているセルを再表示することができます。
Sub main()
FC_HiddenCell hiddenRows:="3 5:7 11:12", hiddenColmuns:="C:D 7 10:12", hidden:=False
End Sub
3.実行結果
当然ですが、最初の状態である使用例①のサンプルと同じ結果になります。
4.コード
以下はFunctionモジュールのプログラムになります。
右上のコピーボタンを押せば、プログラム全体をコピーできます。
Function FC_HiddenCell(Optional book As String, Optional sheet As String, Optional hiddenRows As String, _
Optional hiddenColmuns As String, Optional hidden As Boolean = True)
'指定したシートの行・列を表示・非表示にする
'book :対象ブック名を指定する。省略した場合はアクティブブックを対象とする。複数指定不可。
'sheet :対象シート名を指定する。省略した場合はアクティブシートを対象とする。複数指定不可。
'rows :非表示にする行を指定する。省略可。半角スペース区切りで複数指定可。指定例、"3 6:7 11:15"。
'columns:非表示にする列を指定する。省略可。半角スペース区切りで複数指定可。指定例、"B:C 5 10:15 z"。
'hidden :表示する場合はFalse、非表示にする場合はTrueを指定する。既定値=True。
Dim wb As Workbook
Dim ws As Worksheet
Dim rowsArray() As String
Dim columnsArray() As String
Dim columnsArraySub() As String
Dim i__&, i_start&, i_end&, j__&, j_start&, j_end&, j2__&
'対象ブックをセット
If book <> "" Then
Set wb = Workbooks(book)
Else
Set wb = ActiveWorkbook
End If
'対象シートをセット
If sheet <> "" Then
Set ws = wb.Worksheets(sheet)
Else
Set ws = wb.ActiveSheet
End If
'各変数の設定
If hiddenRows = "" Then
i_start = 0
i_end = 0
ReDim rowsArray(1)
rowsArray(0) = ""
Else
i_start = LBound(Split(hiddenRows))
i_end = UBound(Split(hiddenRows))
ReDim rowsArray(i_end + 1)
rowsArray = Split(hiddenRows)
End If
If hiddenColmuns = "" Then
j_start = 0
j_end = 0
ReDim columnsArray(1)
columnsArray(0) = ""
Else
j_start = LBound(Split(hiddenColmuns))
j_end = UBound(Split(hiddenColmuns))
ReDim columnsArray(j_end + 1)
columnsArray = Split(hiddenColmuns)
End If
With ws
'行方向の非表示
For i__ = i_start To i_end
If rowsArray(i__) <> "" Then
If InStr(rowsArray(i__), ":") > 0 Then
.Rows(rowsArray(i__)).hidden = hidden
Else
.Rows(Val(rowsArray(i__))).hidden = hidden
End If
End If
Next i__
'列方向の非表示
For j__ = j_start To j_end
If columnsArray(j__) <> "" Then
If InStr(columnsArray(j__), ":") > 0 Then
columnsArraySub = Split(columnsArray(j__), ":")
If IsNumeric(columnsArraySub(0)) Then
For j2__ = Val(columnsArraySub(0)) To Val(columnsArraySub(1))
.Columns(j2__).hidden = hidden
Next j2__
Else
.Columns(columnsArray(j__)).hidden = hidden
End If
Else
If IsNumeric(columnsArray(j__)) Then
.Columns(Val(columnsArray(j__))).hidden = hidden
Else
.Columns(columnsArray(j__)).hidden = hidden
End If
End If
End If
Next j__
End With
End Function