См. Приведенный ниже код. Я пытаюсь отсортировать содержимое моего листа на основе ввода ячейки в Range("AD2")
. Проблема заключается в строке key1:=rng_sort
, которая, как мне кажется, вызывается неправильно.
Я хочу изменить столбец, который отсортирован на основе условия, выбранного для ячейки Range("AD2")
. В этой ячейке у меня есть список проверки данных, как показано ниже: введите описание изображения здесь
Если Range("AD2") = "Event"
я хочу отсортировать столбец I. Если он равен «Vo», я хочу отсортировать столбец J.
Любая идея, что я могу делать неправильно?
Спасибо.
Sub sortEvent()
Sheets(1).Activate ' activate sheet(1)
Dim n As Integer
Dim j As Integer
Dim i As Integer
Dim h As Integer
Dim Lastrow As Integer
Dim ng_sort As Range
Lastrow = Cells(Rows.Count, "I").End(xlUp).Row ' guarda o indice da ultima linha com conteudo da coluna I. Mesmo havendo vazios identifca a ultima linha
Length = Range(Range("I10"), Range("I" & Lastrow)).Rows.Count ' dimensão da coluna O ate a ultima celula com conteudo começando na O6
For firstrow = 1 To Length ' loop na coluna O
If Range("C2").Offset(firstrow, 0).Interior.Color = RGB(68, 114, 196) Then
Exit For
End If
Next firstrow
If Range("AD2") = "Event" Then
rng_sort = Range("I1")
Else
rng_sort = Range("J1")
End If
n = 0
j = 1
For i = 1 To Length ' loop na coluna I
If Range("C2").Offset(firstrow + i, 0).Value <> "" Then
n = n + 1
Else
Range(Range("C2").Offset(firstrow + j, 0), Range("C2").Offset(firstrow + j + n - 1, 0)).EntireRow.sort key1:=rng_sort, order1:=xlAscending, Header:=xlNo
j = j + n + 1
n = 0
End If
Next i
End Sub