VBA Excel
241 subscribers
88 photos
23 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
🔢 Метод Sort объекта Range
Метод Sort позволяет отсортировать данные в указанном диапазоне по одному или нескольким столбцам. Это аналог кнопки "Сортировка" в Excel.

📌 Синтаксис
Range.Sort Key1, Order1, Key2, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, DataOption1, DataOption2, DataOption3  

🔹 Key1 – первый столбец для сортировки (Range("A1")).
🔹 Order1 – порядок (xlAscending – по возрастанию, xlDescending – по убыванию).
🔹 Header – есть ли заголовки (xlYes / xlNo / xlGuess).
🔹 Orientation – направление (xlSortRows – по строкам, xlSortColumns – по столбцам).
🔹 Остальные параметры – дополнительные уровни сортировки.

📌 Примеры

1️⃣ Простая сортировка по возрастанию (столбец A)
Sub SortAscending()  
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
End Sub



2️⃣ Сортировка по убыванию (столбец B)
Sub SortDescending()  
Range("B1:B10").Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlYes
End Sub



3️⃣ Сортировка по двум столбцам (сначала по A, потом по B)
Sub SortTwoColumns()  
Range("A1:C10").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Header:=xlYes
End Sub



4. Сортировка без учета регистра
Sub SortCaseInsensitive()  
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, MatchCase:=False
End Sub



5️⃣ Сортировка по строкам (не по столбцам!)
Sub SortByRows()  
Range("A1:D5").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortRows
End Sub



⚠️ Важно
🔹 Если в диапазоне есть заголовки, указывайте Header:=xlYes, иначе заголовок будет отсортирован вместе с данными.
🔹 MatchCase:=True учитывает регистр, а False — игнорирует.
🔹 Orientation:=xlSortRows используется для сортировки по строкам, а xlSortColumns (по умолчанию) — для сортировки по столбцам.

#VBA #ExcelVBA #Sort #Range #Сортировка
🔢 Сортировка данных в ListView

Чтобы сортировать данные в табличных отчетах ListView, добавьте следующий код VBA Excel в модуль формы:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With Me.ListView1
.Sorted = True
.SortKey = ColumnHeader.SubItemIndex ' Сортировка по выбранному столбцу
.SortOrder = IIf(.SortOrder = 1, 0, 1) ' Переключение порядка сортировки
End With
End Sub

Теперь при клике по заголовку любого столбца произойдет сортировка строк по данным этого столбца. При первом клике будет порядок сортировки — по убыванию, при втором — по возрастанию, при третьем — снова по убыванию и так далее.

💡 Небольшое пояснение для поста выше:
В таблицах ListView нумерация столбцов начинается с 0 (ColumnHeader.SubItemIndex), а нумерация заголовков столбцов - с 1 (ColumnHeader.Index).

#VBA #Excel #ListView #Сортировка #Sort #ColumnHeader
4👍4