Динамическое решение с использованием цикла и union ()
Выбирает точный используемый диапазон для каждого столбца.Недостатком является то, что этот выбор не позволяет копировать / вставлять (см. Альтернативное решение).
Option Explicit
Public Sub SelectUsedRangeOfSeveralColumns()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim ArrCols As Variant 'define which columns to select
ArrCols = Array("C", "E", "F", "H")
Dim UnifiedRange As Range 'we collect the ranges here
Dim Col As Variant
For Each Col In ArrCols
If UnifiedRange Is Nothing Then 'first range
Set UnifiedRange = ws.Range(Col & "1", ws.Cells(ws.Rows.Count, Col).End(xlUp))
Else 'all following ranges
Set UnifiedRange = Union(UnifiedRange, ws.Range(Col & "1", ws.Cells(ws.Rows.Count, Col).End(xlUp)))
End If
Next Col
'this is just to visualize what the UnifiedRange contains
UnifiedRange.Select
End Sub

Альтернатива: максимальный используемый диапазон
Преимущество этого метода в том, что вы можете копировать / вставлять, в то время как первый выбор не позволяет копировать / вставлять.
Option Explicit
Public Sub SelectMAXUsedRangeOfSeveralColumns()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim ArrCols As Variant
ArrCols = Array("C", "E", "F", "H")
Dim LastRow As Long
Dim UnifiedRange As Range
Dim Col As Variant
For Each Col In ArrCols
LastRow = Application.Max(LastRow, ws.Cells(ws.Rows.Count, Col).End(xlUp).Row)
If UnifiedRange Is Nothing Then
Set UnifiedRange = ws.Columns(Col)
Else
Set UnifiedRange = Union(UnifiedRange, ws.Columns(Col))
End If
Next Col
Set UnifiedRange = Intersect(UnifiedRange, ws.Range(ArrCols(0) & "1", ws.Cells(LastRow, ArrCols(UBound(ArrCols)))))
'this is just to visualize what the UnifiedRange contains
UnifiedRange.Select
End Sub

Или даже короче
Может быть не так точно, как длинная версия.
Option Explicit
Public Sub SelectMAXUsedRangeOfSeveralColumns()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim UnifiedRange As Range
Set UnifiedRange = Intersect(ws.UsedRange, ws.Range("C:C,E:E,F:F,H:H"))
'this is just to visualize what the UnifiedRange contains
UnifiedRange.Select
End Sub
