Форум по VBA, Excel и Word
Почта для связи: Box1100@yandex.ru
Начало
Поиск
Вход
Регистрация
Форум по VBA, Excel и Word
»
Word
»
Макросы в Word
»
VBA Макросы: Как передвинуть выделенный элемент в listbox?
Печать
Страницы: [
1
]
Автор
Тема: VBA Макросы: Как передвинуть выделенный элемент в listbox? (Прочитано 1217 раз)
Sergi92
Посетитель форума
Сообщений: 49
VBA Макросы: Как передвинуть выделенный элемент в listbox?
«
:
18 Сентябрь 2017, 19:59 »
Помогите пожалуйста решить такую задачу:
есть заполненный listbox. Как с помощью кнопок на форме передвинуть выделенный элемент listbox вверх или вниз?
Записан
Администратор
Administrator
Сообщений: 2053
Re: VBA Макросы: Как передвинуть выделенный элемент в listbox?
«
Ответ #1 :
18 Сентябрь 2017, 23:06 »
Кнопки для запуска макроса нет, я запускал из VBA.
Макрос
Private Sub UserForm_Initialize()
Dim i As Long
' Заполнение листбокса данными.
For i = 1 To 5
Me.ListBox1.AddItem "ячейка " & i & ",1"
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = "ячейка " & i & ",2"
Next i
End Sub
Private Sub cmdUP_Click()
Dim arr(1 To 2), index As Long
' ListIndex - это порядковый номер выделенной строки.
' Если выделена первая строка, то двигать не надо.
If Me.ListBox1.ListIndex = 0 Then
Exit Sub
End If
' Запись порядкового номера выделенной строки.
index = Me.ListBox1.ListIndex
' Запоминание данных в выделенной строке.
' Данные записываются в массив.
arr(1) = Me.ListBox1.List(index, 0)
arr(2) = Me.ListBox1.List(index, 1)
' Удаление выделенной строки.
Me.ListBox1.RemoveItem index
' Создание новой строки и запись в неё данных из массива.
Me.ListBox1.AddItem arr(1), index - 1
Me.ListBox1.List(index - 1, 1) = arr(2)
' Выделение вставленной строки.
Me.ListBox1.Selected(index - 1) = True
End Sub
Private Sub cmdDown_Click()
Dim arr(1 To 2), index As Long
' Если выделена последняя строка, то двигать не надо.
If Me.ListBox1.ListIndex = Me.ListBox1.ListCount - 1 Then
Exit Sub
End If
' Запись порядкового номера выделенной строки.
index = Me.ListBox1.ListIndex
' Запоминание данных в выделенной строке.
' Данные записываются в массив.
arr(1) = Me.ListBox1.List(index, 0)
arr(2) = Me.ListBox1.List(index, 1)
' Удаление выделенной строки.
Me.ListBox1.RemoveItem index
' Создание новой строки и запись в неё данных из массива.
Me.ListBox1.AddItem arr(1), index + 1
Me.ListBox1.List(index + 1, 1) = arr(2)
' Выделение вставленной строки.
Me.ListBox1.Selected(index + 1) = True
End Sub
[вложение удалено администратором]
Записан
Sergi92
Посетитель форума
Сообщений: 49
Re: VBA Макросы: Как передвинуть выделенный элемент в listbox?
«
Ответ #2 :
18 Сентябрь 2017, 23:22 »
Большущее спасибо! Проверил на своей форме - работает!
Записан
Печать
Страницы: [
1
]
Форум по VBA, Excel и Word
»
Word
»
Макросы в Word
»
VBA Макросы: Как передвинуть выделенный элемент в listbox?