Я скопировал код с этого сайта, который, как я думал, решит проблему, которую я пытался решить. Я скопировал исходный код с 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), которая затем подсвечивается. Отладочное сообщение указывает на ошибку Runtime 1004: Недопустимая ссылка на ссылку. Я не могу правильно следовать коду, чтобы узнать, как выбран диапазон сортировки. В идеале я хотел бы иметь возможность сортировать по столбцу C, но при необходимости рассчитывать на столбец A. Диапазон, который я пытаюсь сортировать, - A3: F105.
'введите код here' –
Учитывая, что вы используете Range.CurrentRegion у вас есть какие-либо пустые строки/столбцы внутри A3: F105? См. Https://msdn.microsoft.com/en-us/library/office/aa214248%28v=office.11%29.aspx – barryleajo