※当サイトの一部記事には広告を含みます。
うさねこ気まぐれPG開発室

Excel VBA 複数「列」を非表示にする

複数「列」を非表示

うさこちゃん
うさこちゃん

サンプルは2パターンあります。
データが少ない場合は1つ目のサンプルで十分ですが、データが大量にあると、処理が遅くなる場合があります。
その場合は、サンプル2の「Range」に非表示データを貯めておき、一括して非表示にして高速化する方法がいいと思います。

①元データ

うさこちゃん
うさこちゃん

合計行(12行目)に0のデータがある列を非表示する。

②処理後データ

うさこちゃん
うさこちゃん

合計行(12行目)の0のデータを非表示した結果。

サンプル①

Dim ObjThisSh As Object
Dim LngColMax As Long
Dim LngHidden As Long
Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
LngHidden = 12 '合計行

With ObjThisSh

    LngColMax = .Cells(LngHidden, .Columns.Count).End(xlToLeft).Column

    For LngIndex = 2 To LngColMax
        If .Cells(LngHidden, LngIndex).Value = 0 Then
            '列を非表示にする
            .Columns(LngIndex).EntireColumn.Hidden = True
        End If
    Next LngIndex

End With

広告
ニンテンドープリペイド番号 9000円|オンラインコード版
ニンテンドープリペイド番号 9000円|オンラインコード版
ご利用には、インターネットに接続した、各ネットワークサービスに対応するゲーム機本体が必要です。
ダウンロード番号の再発行・返金・補償などはできません。また、購入されたソフトの返品、返金、換金および譲渡はできません。
複数のゲーム機本体またはユーザーアカウント(ニンテンドーネットワークIDおよびニンテンドーアカウント)に、任意の金額に分けて登録することはできません。
登録された残高は、他のゲーム機本体やユーザーアカウントへ分割・移動・共有はできません。
利用可能なネットワークサービスは、『マイニンテンドーストア』『Nintendo Switch ニンテンドーeショップ』『レコチョク』です。※ マイニンテンドーストアではダウンロード版ソフト、追加コンテンツの購入にのみご利用可能です。
最新の価格・在庫状況は各販売ページでご確認ください。

サンプル② 高速化バージョン

Dim ObjThisSh  As Object
Dim LngColMax As Long
Dim LngIndex As Long
Dim RngHidden As Range
Dim LngHidden As Long
Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
LngHidden = 12 '合計行

With ObjThisSh

    LngColMax = .Cells(LngHidden, .Columns.Count).End(xlToLeft).Column

    For LngIndex = 2 To LngColMax
        If .Cells(LngHidden, LngIndex).Value = 0 Then
            If RngHidden Is Nothing Then
                Set RngHidden = .Cells(2, LngIndex)
            Else
                Set RngHidden = Union(RngHidden, .Cells(2, LngIndex))
            End If
        End If
    Next LngIndex

    If Not RngHidden Is Nothing Then
        '列を一括非表示
        RngHidden.EntireColumn.Hidden = True
    End If

End With

サンプル③ 高速化バージョン(配列判定+一括非表示)

改善ポイント

  • .Cells() を都度呼ぶのではなく、Range.Value を配列に読み込んでループ処理。
    → ExcelとVBA間のやり取りが激減して高速化。
  • 判定だけ配列で行い、対象列を Union でまとめ、最後に Hidden = True を一括適用
  • これにより列数が数百あっても一瞬で非表示化できます。
Dim ObjThisSh As Object
Dim LngColMax As Long
Dim LngHidden As Long
Dim LngIndex As Long
Dim VarValues As Variant
Dim RngHide As Range

Set ObjThisSh = ThisWorkbook.Sheets("Sheet1")
LngHidden = 12 ' 合計行

With ObjThisSh
    ' 対象行を配列に格納
    LngColMax = .Cells(LngHidden, .Columns.Count).End(xlToLeft).Column
    VarValues = .Range(.Cells(LngHidden, 2), .Cells(LngHidden, LngColMax)).Value

    ' 配列で判定(Excelへのアクセスを減らす)
    For LngIndex = 1 To UBound(VarValues, 2)
        If VarValues(1, LngIndex) = 0 Then
            If RngHide Is Nothing Then
                Set RngHide = .Columns(LngIndex + 1)
            Else
                Set RngHide = Union(RngHide, .Columns(LngIndex + 1))
            End If
        End If
    Next LngIndex

    ' 一括で非表示
    If Not RngHide Is Nothing Then RngHide.Hidden = True
End With

免責事項

本記事のサンプルプログラムは、学習・参考用として掲載しているもので、動作や結果を保証するものではありません。 利用する場合は、ご自身の環境に合わせて確認しながらお使いください。万が一トラブルや損害が発生した場合でも、当サイトでは責任を負いかねます。



広告
【Amazon.co.jp限定】Dell SE2426HG 23.8インチ ゲーミングモニター
【Amazon.co.jp限定】Dell SE2426HG 23.8インチ ゲーミングモニター
あらゆるエンターテインメントやゲーミングに最適な24インチ フルHDモニター。240Hzの高リフレッシュ レートと高速IPSパネルを備え、目に優しい製品としてTÜV Rheinlandから3つ星に認定されています。
【ティアリングのない滑らかなパフォーマンス】ゲーム中やコンテンツのストリーミング中も、シームレスで滑らかな動きをお楽しみいただけます。このモニターは、ティアリング(画面のズレ)や遅延のない鮮やかな色彩で、すべての動きを映し出します。
滑らかな動き:240Hzの高リフレッシュ レートと0.5msの高速応答時間により、鮮明なビジュアル、滑らかな動き、入力遅延の最小化を実現します。シームレスなゲームプレイ:AMD FreeSync PremiumテクノロジーでPCゲーミング中のティアリング(画面のズレ)を防ぎます。HDMI VRR(可変リフレッシュ レート)でスムーズかつ高レスポンスなコンソール操作を維持し、シームレスなゲームプレイと応答時間の短縮を実現します。
【どの角度からでも見える】高速IPS (In-Plane Switching):さらに速くなった0.5msの応答時間、広い視野角での優れた色精度と一貫性をお楽しみください。豊かな色彩:sRGBカバー率99%の色域で、鮮明な画像を体験できます。超薄型ベゼル:薄型ベゼルで表示体験を最大限まで向上します。操作性が向上:背面のジョイスティック コントロールで、設定の調整をさらに速く、簡単に、直感的に行うことができます。
【目の負担を軽減】このTÜV Rheinlandから3つ星に認定されたモニターは、目の快適さを何よりも重視しています。有害なブルーライトの発生を低減し、色彩を損なうことなく美しい画質を維持します。

※本文中に記載の会社名・製品名・サービス名・ゲームタイトル名等は、各社の商標または登録商標であり、権利は各社に帰属します。

※サンプルはテストを行っていますが、すべての環境での動作を保証するものではありません。ご利用は自己責任でお願いいたします。

※本記事の仕様・価格・対応状況等は執筆時点で確認できた情報をもとに掲載しています。最新の情報はメーカー公式サイトをご確認ください。

※当サイトでは一部の記事において、アイキャッチ画像にAI生成を使用しています。

※Amazonのアソシエイトとして、うさねこ散歩は適格販売により収入を得ています。