The Problem (Q-score 2, ranked #290th of 303 in the Excel VBA archive)
The scenario as originally posted in 2014
I am attempting to sort column D in ascending order in an excel file with VBA. I would like to expand the selection for all values in Column A-F.
I’ve used this formula as a starting point:
sort ascending/descending vba excel
It only sorts one column and in descending order. I am having trouble finding more examples.
LastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
If (.Range("D2").Value > .Range("D" & CStr(LastRow))) Then
xlSort = xlAscending
End If
.Range("D2:D" & LastRow).Sort Key1:=.Range("D2"), Order1:=xlSort, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Why this Range / Worksheet targeting trips people up
The question centers on reaching a specific cell, range, or workbook object. In Excel VBA, this is the #1 source of failures after activation events: every property (.Value, .Formula, .Address) behaves differently depending on whether the parent Workbook is explicit or implicit.
The Verified Solution — niche answer (below median) (+9)
4-line Excel VBA pattern (copy-ready)
Here is the answer:
.Range("D1") = "Index"
.Columns("A:F").Sort key1:=Range("D2"), _
order1:=xlAscending, Header:=xlYes
Thanks to simoco’s comment!
When to Use It — classic (2013–2016)
Ranked #290th in its category — specialized fit
This pattern sits in the 97% tail relative to the top answer. Reach for it when your scenario closely matches the question title; otherwise browse the Excel VBA archive for a higher-consensus alternative.
What changed between 2014 and 2026
The answer is 12 years old. The Excel VBA object model has been stable across Office 2013, 2016, 2019, 2021, 365, and 2024/2026 LTSC, so the pattern still compiles. Changes that might affect you: 64-bit API declarations (use PtrSafe), blocked macros in downloaded files (Mark-of-the-Web), and the shift toward Office Scripts for web-first workflows.