listbox.RemoveItem

Программирование на Visual Basic for Applications
Mypppka
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2006 (Пт) 2:10

listbox.RemoveItem

Сообщение Mypppka » 28.07.2006 (Пт) 2:18

Не подскажете, как удалить несколько элементов из списка, да так, чтоб в текстовых полях отображался индекс эл-та, с кот началось удаление, и количество удаленных элементов всего? С использованием For... Next
В справке не густо, а сама не додумаюсь :oops:

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.07.2006 (Пт) 7:22

Просто все как пятак. Предположим, что список имеет имя lstData, текстовое поле, содержащее индекс с которого начинаем удаление элементов - txtBegin, текстовое поле, содержащее количество удаляемых элементов - txtCount, и кнопка, нажатие на которую приводит к удалению - btnDelete:

Код: Выделить всё
Private Sub btnDelete_Click()
Dim i0 As Integer
Dim c As Integer
i0 = CInt(txtBegin.Text)
c = CInt(txtCount.Text)
Dim i As Integer
If i0 >= 0 And i0 + c <= lstData.ListCount Then
    For i = 1 To c
        lstData.RemoveItem i0
    Next i
End If
End Sub


в принципе стоит добавить проверку на то, что в txtBegin и в txtCount вводятся целые числа
Весь мир матрица, а мы в нем потоки байтов!

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 28.07.2006 (Пт) 8:07

Я написала код, который удаляет выбранные элементы из списка. Так, наверное, будет проще. Не надо считать индекс элемента (к тому может не все знают что он начинается с 0), количество удалений. В общем решайте сами. Удачи
Заранее установлено свойство: ListBox1.MultiSelect = fmMultiSelectMulti

Код: Выделить всё
Private Sub CommandButton1_Click() 'кнопка удалить
Dim i As Integer
For i = 0 To 9
    If i > ListBox1.ListCount - 1 Then Exit Sub
    If ListBox1.Selected(i) = True Then
        ListBox1.RemoveItem (i)
        i = i - 1
    End If
Next i
End Sub

Private Sub CommandButton2_Click() 'кнопка добавить
ListBox1.Clear
For i = 0 To 9
    ListBox1.AddItem (i)
Next i
End Sub

Mypppka
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2006 (Пт) 2:10

Сообщение Mypppka » 29.07.2006 (Сб) 0:31

Спасиб огромное, все работает, как часы :D
Еще вопрос можно?
Надо, чтобы любые подсвеченные элементы из списка (множественный выбор) при нажатии на кнопку записывались в столбец “B” любого рабочего листа.
Вот что я написала:
Код: Выделить всё
Private Sub Na_list_Click()
Dim i As Integer, n As Integer
With Cpicok
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
g = .List(i)
n = Range("A1").CurrentRegion.Rows.Count
End If
Next i
Cells(n + 1, 2).Value = g
End With
End Sub

Она записывает, но только одну фамилию с наибольшим индексом из всех подсвеченных. Что надо изменить, чтобы сразу выводились на листе все выделенные фамилии из списка?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2006 (Сб) 6:20

У тебя присваивание значения ячейки было за пределами цикла, поэтому присваивалось только последнее выделенное значение. Держи правильный код:
Код: Выделить всё
Private Sub Na_list_Click()
    Dim i As Integer, n As Integer
    With Cpicok
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                n = Range("A1").CurrentRegion.Rows.Count
                Cells(n + 1, 2).Value = .List(i)
            End If
        Next i
    End With
End Sub
Весь мир матрица, а мы в нем потоки байтов!

Mypppka
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2006 (Пт) 2:10

Сообщение Mypppka » 29.07.2006 (Сб) 12:05

еще пару вопр можно?

1.Я установила у ComboBox’а свойство ColumnHeads=True, теперь когда список раскрывается, сверху появляются названия столбцов «Столбец А», «Столбец В»(Данные(имя, фам, отч) берутся с рабочего листа из столбцов А,В,С)… А Мне надо, чтобы столбцы назывались «№п.п», «Имя», «Фамилия»...
.Как это делается?

2.Как сделать, чтобы в списке, в столбце «№п.п» были номера элементов начиная с 1?

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 01.08.2006 (Вт) 15:02

Устанавливаешь следующие свойства:
ColumnHeads=True, ColumnCount=4, ListFillRange=A2:D13.
В ячейках А1, B1, C1, D1 - пишешь названия столбцов «№п.п», «Имя», «Фамилия»... Столбец A ручками заполняешь нумерацией.
Удачи

Mypppka
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2006 (Пт) 2:10

Сообщение Mypppka » 02.08.2006 (Ср) 13:51

fishh писал(а):Устанавливаешь следующие свойства:
ColumnHeads=True, ColumnCount=4, ListFillRange=A2:D13.
В ячейках А1, B1, C1, D1 - пишешь названия столбцов «№п.п», «Имя», «Фамилия»... Столбец A ручками заполняешь нумерацией.
Удачи

Да это я знаю как делать, вот пронумеровать если нет в столбце А нумерации.. Мне кажется, это из области фантастики..)
Но все равно спасибо за участие..


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList