How to Collapse Columns in Excel Using VBA

Manipulating columns in Excel may often be necessary when dealing with large spreadsheets to maintain readability and organization. One such manipulation is collapsing or hiding columns using Visual Basic for Applications (VBA). This is particularly useful when you want to control the visibility of certain data within your workbook programmatically. Here’s how to collapse columns in Excel using VBA.


Before we dive into the VBA macro to collapse columns, it’s essential that we have a dataset to work with. For this example, let’s assume we have a spreadsheet with data in columns A through F, and we want to collapse columns C through E.

Determine the Columns to Collapse

First, you need to identify which columns you want to hide. Excel columns are referenced by letters, so if you want to collapse columns C to E, you know that you’ll be working with columns 3 to 5 internally in VBA since column A is column 1, B is 2, and so on.

Open the VBA Editor

To access the VBA editor within Excel, you can press Alt + F11 on your keyboard. This shortcut works with all versions of Excel. Once in the VBA editor, you can create a new module where you will place your macro code.

Write the VBA Macro

To collapse the desired columns, you can create a simple macro as follows:

This macro uses the Columns object to reference columns C through E directly and then sets the Hidden property to True to collapse them.

Execute the Macro

You can run your macro either by pressing F5 while in the VBA editor with the macro selected or by assigning the macro to a button in your Excel worksheet for easier access.


Collapsing columns in Excel using VBA can greatly enhance your ability to manage spreadsheet visibility and improve the user experience. With the provided VBA script, you can programmatically hide specific columns, making your Excel sheets cleaner and more presentable.

Remember, VBA is a powerful tool that can perform various actions beyond just collapsing columns, so feel free to explore and experiment with VBA macros to automate your Excel tasks.

Posted in vba