2014-10-02 4 views
0

Возможно ли использовать список для изменения порядка строк на листе? Я искал в Интернете около часа без выступлений. Я использую следующий код для задачи:Excel VBA (userform) о ListBox

Private Sub UserForm_Initialize() 
ListBox1.RowSource = "Sheet1!A1:A15" 
End Sub 

Option Explicit 
Const UP As Integer = -1 
Const DOWN As Integer = 1 

Private Sub SpinButton1_SpinUp() 

If Me.ListBox1.ListCount > 1 Then 
    Call MoveListItem(UP, Me.ListBox1) 
End If 

End Sub 

Private Sub SpinButton1_SpinDown() 

If Me.ListBox1.ListCount > 1 Then 
    Call MoveListItem(DOWN, Me.ListBox1) 
End If 

End Sub 

Private Sub MoveListItem(ByVal intDirection As Integer, _ 
ByRef ListBox1 As ListBox) 

Dim intNewPosition As Integer 
Dim strTemp As String 

intNewPosition = ListBox1.ListIndex + intDirection 
strTemp = ListBox1.List(intNewPosition) 

If intNewPosition > -1 _ 
And intNewPosition < ListBox1.ListCount Then 

    'Swap listbox items 
    ListBox1.List(intNewPosition) = ListBox1.Value 
    ListBox1.List(intNewPosition - intDirection) = strTemp 
    ListBox1.Selected(intNewPosition) = True 

End If 

End Sub 

Надежда может дать мне подсказку!

UPDATE !!

Что я хочу, если я, например, иметь эти значения в столбце в моем листе:

week1

week2

week3

week4

Тогда я хотел бы повторно создать порядок этих значений с помощью SpinButton в ListBox;

week2

week4

week1

week3

+0

Что значит изменить порядок строк? сортировка? можете ли вы предоставить данные до и после? это поможет нам понять, что вы хотите делать. – guitarthrower

+0

@guitarthrower Я обновил свой вопрос, надеюсь, что вы поможете! –

ответ

1

Вы, безусловно, можете сделать это!

Вот быстрый код, который делает это в общем, я оставлю его вам на место это, где это необходимо:

For i = 0 To ListBox1.ListCount - 1 
    ActiveWorkbook.Sheets("Sheet1").Range("A" & CStr(i + 1)).Value = ListBox1.List(i) 
Next i 

Вы, вероятно, нужно изменить то, что находится внутри цикла для лучше отразите свой собственный код. Для записи в определенный диапазон просто добавьте нужный номер нужной строки!

Смежные вопросы