【发布时间】:2014-04-06 03:53:59
【问题描述】:
我在 VBA 中有一系列单元格,每次运行代码时都会更改。我正在尝试编写代码,以便此范围按 F 列排序。
我遇到的问题是它只能是这个特定的单元格范围。在此范围下还有其他我不想排序的单元格,并且此范围的大小会发生变化。部分代码如下。这是我到目前为止没有运气的尝试。
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
vtools = Selection
ActiveWorkbook.Worksheets("Exceptions Weekly Summary").Sort.SortFields.Add Key _
:=Range(vtools), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Exceptions Weekly Summary").Sort
.SetRange Range("B11:H14")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
这不起作用。
我不能直接引用单元格(例如,我不能使用 Range("F2:F5")),因为每次运行代码时这些单元格都位于不同的位置。我知道如何找到我需要排序的内容,甚至选择它,但是我无法告诉排序函数以哪一列排序。
有人可以帮我解决这个问题吗?提前非常感谢您!
【问题讨论】:
-
我知道如何找到我需要排序的内容,甚至选择它 当前代码中的哪些行是这样做的? (我猜是前两行)然后这个选择会是当前在您的
.Sort中硬编码的“B11:H14”吗? -
@DavidZemens 是的,代码中的前两行就是这样做的。范围 B11 到 H14 是在我复制的特定代码中选择的范围,但是每次运行代码时都会更改。
标签: excel function vba sorting range