【VBA】ワークシートの行・列を非表示にする

エクセルVBAで使うコードの備忘録。エクセルワークシートで選択した行・列を非表示にするコード。非表示になった行・列を再表示するコードについても一緒に記載します。

スポンサーリンク

Hiddenプロパティ

ワークシートの行や列の表示・非表示を切り替えるにはRangeオブジェクトのHiddenプロパティを使用します。Hidden(隠れた)という名前からもわかるように、Hiddenプロパティの値をTRUEに設定すれば行・列が非表示になり、逆にFALSEに設定すれば表示されます。

行を非表示にする

ワークシートの行(横方向)を非表示にするサンプルコードです。Hiddenプロパティは行や列全体に対して設定するので、Rowsに非表示にしたい行番号を引数として与えて表示・非表示を切り替えます。行全体のオブジェクトを取得する方法としては、RangeオブジェクトのEntireRowを使用する方法もあります。

なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

行を非表示にする(Rowsを使う場合)

Public Sub HideUnhideRow1()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 非表示にする行番号 ---'
    Dim rowIndex As Long
    rowIndex = [行番号]
    
    '--- 指定した行を非表示にする ---'
    ws.Rows(rowIndex).Hidden = True
    
    '--- 指定した行を表示する ---'
    ws.Rows(rowIndex).Hidden = False
    
End Sub

行を非表示にする(Rangeを使う場合)

Public Sub HideUnhideRow2()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 非表示にする行を含むセルのアドレス(A1など) ---'
    Dim cellAddress As String
    cellAddress = [セルのアドレス(A1など)]
    
    '--- 指定した行を非表示にする ---'
    ws.Range(cellAddress).EntireRow.Hidden = True
    
    '--- 指定した行を表示する ---'
    ws.Range(cellAddress).EntireRow.Hidden = False
    
End Sub

列を非表示にする

ワークシートの列(縦方向)を非表示にするサンプルコードです。Hiddenプロパティは行や列全体に対して設定するので、Columnsに非表示にしたい列番号を引数として与えて表示・非表示を切り替えます。列全体のオブジェクトを取得する方法としては、RangeオブジェクトのEntireRowを使用する方法もあります。

列を非表示にする(Columnsを使う場合)

Public Sub HideUnhideColumn1()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 非表示にする列番号 ---'
    Dim colIndex As Long
    colIndex = [列番号]
    
    '--- 指定した列を非表示にする ---'
    ws.Columns(colIndex).Hidden = True
    
    '--- 指定した列を表示する ---'
    ws.Columns(colIndex).Hidden = False
    
End Sub

列を非表示にする(Rangeを使う場合)

Public Sub HideUnhideColumn2()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 非表示にする列を含むセルのアドレス(A1など) ---'
    Dim cellAddress As String
    cellAddress = [セルのアドレス(A1など)]
    
    '--- 指定した列を非表示にする ---'
    ws.Range(cellAddress).EntireColumn.Hidden = True
    
    '--- 指定した行を表示する ---'
    ws.Range(cellAddress).EntireColumn.Hidden = False
    
End Sub