Страницы: 1
RSS
VBA сортировка выделенного диапазона
 
Поиск не помог (видимо потому что я нуб в макросах)  
 
Есть код:  
 
Sub D()  
Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 = "= R[-1]C"
Selection.Copy  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
   Application.CutCopyMode = False  
End Sub  
 
После выполнения диапазон остается выделенным. В код нужно добавить сортировку выделенного диапазон по столбцу D (4-й столбец по счету) по убыванию (там числа). Верхняя строка диапазона не заголовки и тоже подлежат сортировке.  
 
Записал макрос сортировки:  
 
Sub сортировка()  
   ActiveWorkbook.Worksheets("пслн").Sort.SortFields.Clear  
   ActiveWorkbook.Worksheets("пслн").Sort.SortFields.Add Key:=Range("D57:D70"), _  
       SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal  
   With ActiveWorkbook.Worksheets("пслн").Sort  
       .SetRange Range("A57:D70")  
       .Header = xlGuess  
       .MatchCase = False  
       .Orientation = xlTopToBottom  
       .SortMethod = xlPinYin  
       .Apply  
   End With  
End Sub  
 
Но как в нем поставить выделенный диапазон, а не фиксированный не понимаю.
 
Попробуйте фиксированный диапазон заменить на Selection
 
Сделал так:  
 
Sub D()  
Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 = "= R[-1]C"
Selection.Copy  
   Selection.PasteSpecial xlPasteValues  
   Application.CutCopyMode = False  
       ActiveWorkbook.Worksheets("пслн").Sort.SortFields.Clear  
   ActiveWorkbook.Worksheets("пслн").Sort.SortFields.Add Key:=Range("D:D"), _  
       SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal  
   With ActiveWorkbook.Worksheets("пслн").Sort  
       .SetRange Selection  
       .Header = xlGuess  
       .MatchCase = False  
       .Orientation = xlTopToBottom  
       .SortMethod = xlPinYin  
       .Apply  
   End With  
End Sub  
 
 
Работает :)  
Вопрос закрыт.
Страницы: 1
Читают тему
Наверх