Страницы: 1
RSS
VBA Использование переменной при сортировке, присвоить переменной диапазон и использовать его в сортировке
 
Вечер добрый,
Пытаюсь присвоить переменной диапазон и использовать еe в сортировке. Ругается. Как правильно?
Код
Option Explicit
Option Base 1

Public Диапазон As Range

Sub Массивы()
  Диапазон = ActiveWorkbook.Worksheets("Лист1").Range("a1")
  Call Сортировка(Диапазон)
End Sub

Sub Сортировка(iCell As Range) 'сортирую по первому столбцу
  With ActiveWorkbook.Worksheets("Лист1").Sort
    .SortFields.Add Key:=Range(iCell), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange Range(iCell.CurrentRegion.Value)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End Sub

Спасибо.
 
Set Диапазон

А зачем Вы используете Option Base? Ведь с массивами не работаете...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, в этом случае (set) в 13 строке ошибка: "Method Range of object _Global failed".
Option Base это с рабочей книги осталось.
 
Конечно ошибка. Вы же синтаксис вообще не знаете. У Вас iCell и так является диапазоном, а Вы его в Cells запихиваете.
.SortFields.Add Key:=iCell

Советую почитать на досуге:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за совет. Все работает:
Код
Sub Массивы()
  Set Диапазон = ActiveWorkbook.Worksheets("Лист1").Range("a1")
  Call Сортировка(Диапазон)
End Sub

Sub Сортировка(iCell As Range)
  With ActiveWorkbook.Worksheets("Лист1").Sort
    .SortFields.Add Key:=iCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange iCell.CurrentRegion
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End Sub
 
Изменено: PavelKs - 31.07.2014 23:39:44
Страницы: 1
Наверх