Один из возможных способов (применяется только к столбцам от A до E):
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lrow As Long
Dim sCol As Long
sCol = Target.Column
If Not Intersect(Target, Columns("A:E")) Is Nothing Then
If Intersect(Target, Columns(sCol)).Address = Columns(sCol).Address Then
lrow = Cells(Rows.Count, Target.Column()).End(xlUp).Row
Range(Cells(2, Target.Column()), Cells(lrow, Target.Column())).Select
End If
End If
End Sub
Если вы выберете весь столбец, выбор изменится со строки 2 на последнюю заполненную строку. Если вы выберете одну ячейку в столбце, ничего не произойдет.
Чтобы применить это, щелкните правой кнопкой мыши вкладку листа, выберите "Просмотреть код" и вставьте код в большую белую область кода редактора Visual Basic. Закройте VBE. Не забудьте сохранить книгу как файл с поддержкой макросов, если вы используете Excel 2007 или более позднюю версию.