我从本网站复制了一些代码,我认为这样可以解决我试图解决的问题。我从Using Sort in VBA for a Range that Changes 复制了原始代码我只是将更改的数据的左上角定义为单元格A3中的变化做了很少的工作。最终的代码如下运行:“运行时错误1004:排序参考无效”
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
'actSheet.Range("E5:G6").Select
ActiveSheet.Range("a3").CurrentRegion.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
我的问题是代码几乎在最后失败。我已经完成了代码,它正确地提取了数据区域。它到达时会失败最后只有一行(.Apply)被突出显示。调试消息指示运行时错误1004:排序引用无效。 我无法很好地跟踪代码,看看如何选择排序范围。理想情况下,我希望能够对C列进行排序,但如果需要的话,可以在列A中进行排序。我试图分类的范围是A3:F105。
'输入代码here' – 2015-02-23 20:21:08
假设你正在使用Range.CurrentRegion你有A3内的任何空白行/列:F105?请参阅https://msdn.microsoft.com/en-us/library/office/aa214248%28v=office.11%29.aspx – barryleajo 2015-02-23 20:53:20