在VBA中使用sorting范围进行更改
我有一个VBA中的单元格范围,每次运行代码时都会改变。 我正在尝试编写代码,以便该列按F列sorting。
我遇到的问题是,它只能是这个细胞的特定范围。 此范围下还有其他单元格,我不想分类,并且此范围的大小会发生变化。 部分代码如下。 这是我迄今为止所尝试过的,没有运气。
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”)),因为这些单元格在每次运行代码时位于不同的位置。 我知道如何find我需要sorting的东西,甚至select它,但是我无法告诉sorting函数要sorting的列。
有人可以帮我弄这个吗? 提前谢谢你!
如果我理解正确,这将有助于。 找出所选区域的行号,然后用这些数字在列F中作出一个范围,并将其作为sorting的关键。
Sub sortOnlySelectedArea() Dim actSheet As Worksheet Dim upper, lower As Integer Dim tempString As String Dim selectedArea As Range Set actSheet = Application.Worksheets("Sheet1") ' here you have to put in your part to make the right selection actSheet.Range("E5:G6").Select Set selectedArea = Selection upper = selectedArea.Row lower = upper + selectedArea.Rows.Count - 1 tempString = "F" & CStr(upper) & ":F" & CStr(lower) actSheet.Sort.SortFields.Clear actSheet.Sort.SortFields.Add Key:=Range(tempString), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With actSheet.Sort .SetRange selectedArea .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub