SetoFF 0 / 0 / 0 Регистрация: 07.12.2011 Сообщений: 3 |
||||
1 |
||||
07.12.2011, 08:40. Показов 23611. Ответов 7 Метки нет (Все метки)
Скажите пожалуйста, что нужно добавить, чтобы из ListBox’а выделенные строки удалялись?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
07.12.2011, 10:24 |
2 |
|||
Ну если AddItem — «добавить элемент», то как будет «удалить элемент»?
При этом цикл лучше пустить в обратную сторону, т.к. при удалении i-го элемента i-тым становится следующий элемент.
1 |
0 / 0 / 0 Регистрация: 07.12.2011 Сообщений: 3 |
|
12.12.2011, 14:55 [ТС] |
3 |
Что-то у меня не пашет… Можете полностью написать как должно быть?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
12.12.2011, 15:33 |
4 |
|||
2 |
0 / 0 / 0 Регистрация: 06.04.2015 Сообщений: 27 |
|
06.04.2015, 16:52 |
5 |
А как сделать так, чтобы при удалении из листбокса, удалялась строка в таблице?
0 |
1337 / 308 / 74 Регистрация: 13.11.2008 Сообщений: 635 |
|
06.04.2015, 16:55 |
6 |
Для этого изначально надо понимать как эта строка в ListBox попадает. И как её правильно отнести именно к нужной строке, чтобы не удалять то, чего удалять не надо.
0 |
1 / 1 / 0 Регистрация: 05.07.2015 Сообщений: 42 |
|
21.12.2015, 20:56 |
7 |
Скажите пожалуйста!
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
21.12.2015, 22:48 |
8 |
Antontth, ListBox1.ListIndex
1 |
Цитата | ||
---|---|---|
написал:
, |
Боже. Скажи мне, ты реально немного с чувством юмора, или же ты ищешь до чего докопаться?
Либо ты блажен, либо у тебя мания преследования ChatGPT
Он по всюду, он везде.
Но я уже написал, у меня даже акка нет на него. Верить или нет, это дело твое.
Я челу вроде тебя, точно ничего доказывать не буду, причина выше.
Ты мне не интересен, ни как человек, ни как личность. Тьфу
Но, если ты включишь немного голову и прочитаешь раз так сотый , ты поймешь суть вопроса.
Вот рассмешил, так рассмешил. Поржали всем коллективом. Продолжай и не останавливайте. А то, нам с коллегами будет скуфно на работке работу работать.
Иди лучше молока попей, дефомин поднимется, полегчает.
И от меня отстань, а то я могу подумать, что ты из тех самых… движение которых запрошено на территории РФ. Бээ
А то смотри, я могу расценить твои действия ка домогательства, а может даже и как на почве твоих сексуальных фантазий, что уже нарушает заоны РФ об ЛГБТ, а значит и
3.1. Создавать сообщения, нарушающие действующее законодательство РФ.
Но, это так, размышление.
Хочешь построить свои домыслы о заговоре мира , в курилке есть тема про ChatGPT, вот иди туда и устраивай холивар.
Изменено: Егор Чернов — 02.04.2023 16:41:12
I have a listbox that shows up the rows of an excel sheet i need to add a delete button to delete the selected row. i tried this
Private Sub CommandButton3_Click()
Dim i As Integer
For i = 0 To Range("A65356").End(xlUp).Row - 1
If lstDisplay.Selected(i) Then
Rows(i).Select
Selection.Delete
End If
Next i
End Sub
but when i try to delete for example the the row 10 it’s the 9 that gets deleted it always delets the line before the one selected
any fix ???
Thanks everyone
BigBen
43.9k6 gold badges27 silver badges40 bronze badges
asked Sep 18, 2019 at 12:47
2
I’ll have to test this myself, but I guess something along the lines of:
Private Sub CommandButton3_Click()
Dim i As Long, rng As Range
With Me.lstDisplay
For i = 0 To .ListCount - 1
If .Selected(i) Then
If Not rng Is Nothing Then
Set rng = Union(rng, Sheets("Sheet1").Rows(i + 1))
Else
Set rng = Sheets("Sheet1").Rows(i + 1)
End If
End If
Next i
End With
rng.EntireRow.Delete
End Sub
That way you’ll only have to perform deleting rows once.
Btw, I anticipated a multiselect listbox. If it’s not a multiselect it would simplify the code as there is no need to loop the listbox.
answered Sep 18, 2019 at 13:08
JvdVJvdV
66.6k8 gold badges38 silver badges68 bronze badges
I would suggest you this :
Private Sub CommandButton3_Click()
Dim i As Integer
For i = 1 To Range("A65356").End(xlUp).Row - 1
If lstDisplay.Selected(i) Then
Rows(i).Delete
i = i - 1
End If
Next i
End Sub
Also Note that Rows(i).Delete
is exactly the same as Rows(i).Select Selection.Delete
Excepted that Select
should be avoided as much as possible
As said @BigBen :
You can use the «Option Base 1» declaration at the top of a code module to change the default lower bound to 1 instead of 0.
For exemple :
Option Base 1
Dim arValues(10) As String 'contains 10 items (not 11)
Option Base Doc Here
answered Sep 18, 2019 at 12:57
TourEiffelTourEiffel
3,9682 gold badges16 silver badges42 bronze badges
6
Содержание
- Listbox vba excel методы
- Объект ListBox (Outlook Forms Script)
- Замечания
- Стили элемента ListBox
- События
- Методы
- Свойства
- Поддержка и обратная связь
- Объект ListBox (Access)
- Замечания
- Пример
- События
- Методы
- Свойства
- См. также
- Поддержка и обратная связь
Listbox vba excel методы
На этом шаге мы рассмотрим назначение, основные свойства и методы этого элемента .
Элемент управления ListBox (Список) создается с помощью кнопки Список (ListBox) (рисунок 1).
Рис.1. Список в форме
Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.
Приведем наиболее часто используемые свойства элемента управления ListBox .
Свойство | Назначение |
---|---|
ListIndex | Возвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуля |
ListCount | Возвращает число элементов списка |
TopIndex | Возвращает элемент списка с наибольшим номером |
ColumnCount | Устанавливает число столбцов в списке |
TextColumn | Устанавливает столбец в списке, элемент которого возвращается свойством Text |
Enabled | Допустимые значения: True (запрещен выбор значения из списка пользователем) и False (в противном случае) |
Text | Возвращает выбранный в списке элемент |
List | Возвращает элемент списка, стоящий на пересечении указанных строки и столбца. Синтаксис: |
RowSource | Устанавливает диапазон, содержащий элементы списка |
ControlSource | Устанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка |
MultiSelect | Устанавливает способ выбора элементов списка. Допустимые значения:
|
Selected | Допустимые значения: True (если элемент списка выбран) и False (в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMultiSelectMulti или fmMultiSelectExtended . |
ColumnWidths | Устанавливает ширину столбцов списка. Синтаксис: |
ColumnHeads | Допустимые значения: True (выводятся заголовки столбцов раскрывающегося списка) и False (в противном случае) |
ListStyle | Допустимые значения:
|
MatchEntry | Выводит первый подходящий элемент из списка при наборе его имени на клавиатуре. Допустимые значения:
|
BoundColumn | Устанавливает тип, возвращаемый свойством Value . А именно,
|
Таблица 1. Основные свойства ListBox
Приведем наиболее часто используемые методы элемента управления ListBox .
Метод | Назначение |
---|---|
Clear | Удаляет все элементы из списка |
RemoveItem | Удаляет из списка элемент с указанным номером. Синтаксис:
Параметр index определяет номер удаляемого из списка элемента |
AddItem | Добавляет элемент в список. Синтаксис:
|
Таблица 2. Основные методы ListBox
На следующем шаге мы рассмотрим особености заполнения списка .
Источник
Объект ListBox (Outlook Forms Script)
Отображает список значений и позволяет выбирать одно или несколько значений.
Замечания
Если элемент ListBox привязан к источнику данных, элемент ListBox сохраняет выбранное значение в этом источнике данных.
ListBox может отображаться в виде списка или группы элементов управления OptionButton или CheckBox.
Свойством по умолчанию для ListBox является свойство Value .
Событием по умолчанию для ListBox является событие Click .
В раскрывающийся элемент ListBox невозможно поместить текст.
Стили элемента ListBox
Вы можете выбрать любой из двух стилей представления элемента ListBox. Это выражается свойством ListStyle . Каждый из них реализует собственный способ выбора элементов в списке.
Если стиль равен 0, каждый элемент находится в отдельной строке; пользователь выбирает элемент, выделяя одну или несколько строк.
Если стиль равен 1, в начале каждой строки отображается optionButton или CheckBox . В этом случае для выбора элемента пользователь нажимает кнопку или устанавливает флажок. Флажки отображаются только в том случае, если свойство MultiSelect имеет значение True.
События
Имя | Описание |
---|---|
Click | Происходит, когда пользователь окончательно выбирает для элемента управления значение, которое содержит несколько возможных значений. |
Методы
Имя | Описание |
---|---|
AddItem | Для элемента ListBox с одним столбцом метод AddItem добавляет элемент в список. Для многоколоний ListBox этот метод добавляет строку в список. |
Clear | Удаляет все записи в списке в ListBox. |
RemoveItem | Удаляет строку из списка в ListBox. |
Свойства
Имя | Описание |
---|---|
BackColor | Возвращает или задает значение Long , указывающее цвет фона объекта . Для чтения и записи. |
BorderColor | Возвращает или задает значение Long , указывающее цвет границы объекта. Для чтения и записи. |
BorderStyle | Возвращает или задает целое число , указывающее тип границы элемента управления. Для чтения и записи. |
BoundColumn | Возвращает или задает значение Variant , определяющее источник данных в многоколоний ListBox. Для чтения и записи. |
Столбец | Возвращает или задает значение Variant , представляющее одно значение, столбец значений или двумерный массив для загрузки в ListBox. Для чтения и записи. |
ColumnCount | Возвращает или задает значение Long , представляющее количество столбцов, отображаемых в списке. Для чтения и записи. |
ColumnHeads | Возвращает или задает логическое значение, указывающее, отображается ли одна строка заголовков столбцов. Для чтения и записи. |
ColumnWidths | Возвращает или задает значение String , указывающее ширину каждого столбца в многоколоний ListBox. Для чтения и записи. |
Enabled | Возвращает или задает логическое значение, указывающее, может ли элемент управления получать фокус и реагировать на события, созданные пользователем. Для чтения и записи. |
ForeColor | Возвращает или задает значение Long , указывающее цвет переднего плана объекта. Для чтения и записи. |
IMEMode | Возвращает или задает целое число , указывающее режим времени выполнения по умолчанию редактора метода ввода (IME) для элемента управления. Для чтения и записи. |
IntegralHeight | Возвращает или задает логическое значение, указывающее, отображает ли ListBox полные строки текста в списке или частичные строки. Для чтения и записи. |
List | Возвращает или задает значение Variant , представляющее указанную запись в ListBox. Для чтения и записи. |
ListCount | Возвращает значение Long , представляющее количество записей списка в элементе управления . Только для чтения. |
ListIndex | Возвращает или задает значение Variant , представляющее текущий выбранный элемент в элементе ListBox. Для чтения и записи. |
ListStyle | Возвращает или задает целое число , указывающее визуальный вид списка в ListBox. Для чтения и записи. |
Locked | Возвращает или задает логическое значение, указывающее, можно ли изменять элемент управления. Для чтения и записи. |
MatchEntry | Возвращает или задает целое число , указывающее, как ListBox выполняет поиск в списке по типу пользователя. Для чтения и записи. |
MouseIcon | Возвращает значение String , представляющее полное имя пути настраиваемого значка, назначаемого элементу управления. Только для чтения. |
MousePointer | Возвращает или задает целое число , указывающее тип указателя, отображаемого при наведении указателя мыши на определенный объект. Для чтения и записи. |
MultiSelect | Возвращает или задает целое число , указывающее, допускает ли объект несколько выделений. Для чтения и записи. |
Selected | Возвращает или задает логическое значение, указывающее состояние выделения элементов в ListBox. Для чтения и записи. |
SpecialEffect | Возвращает или задает целое число , указывающее внешний вид объекта. Для чтения и записи. |
Текст | Возвращает или задает строку, указывающую текст в элементе ListBox, изменяя выбранную строку в элементе управления . Для чтения и записи. |
TextAlign | Возвращает или задает целое число , указывающее способ выравнивания текста в элементе управления . Для чтения и записи. |
TextColumn | Возвращает или задает значение Variant , которое идентифицирует столбец в элементе ListBox для отображения пользователю. Для чтения и записи. |
TopIndex | Возвращает или задает значение Long , представляющее индекс элемента списка, отображаемого в верхней позиции списка. Для чтения и записи. |
Value (Значение) | Возвращает или задает значение Variant , указывающее значение в BoundColumn выбранных строк. Для чтения и записи. |
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Объект ListBox (Access)
Этот объект соответствует элементу управления list box. В элементе управления «Поле списка» отображается список значений или альтернатив.
Замечания
Управление | Средство |
---|---|
Во многих случаях быстрее и проще выбрать значение из списка, чем запоминать значение для ввода. Список вариантов также помогает убедиться, что значение, введенное в поле, является правильным.
Список в списке состоит из строк данных. Строки могут содержать один или несколько столбцов, которые могут отображаться с заголовками или без них, как показано на следующей схеме.
Если поле списка с несколькими столбцами привязано, Microsoft Access сохраняет значения из одного из столбцов.
Используйте поле списка без привязки, чтобы сохранить значение, которое можно использовать с другим элементом управления. Например, можно использовать список без привязки, чтобы ограничить значения в другом списке или в настраиваемом диалоговом окне. Вы также можете использовать поле списка без привязки, чтобы найти запись на основе значения, выбранного в списке.
Если в форме нет места для отображения списка или вы хотите иметь возможность вводить новые значения, а также выбирать значения из списка, используйте поле со списком вместо списка.
Пример
В этом примере показано, как фильтровать содержимое поля списка при вводе в текстовое поле.
В этом примере в списке с именем ColorID отображается список цветов, хранящихся в таблице Colors . При вводе в текстовое поле FilterBy элементы в ColorID фильтруются динамически.
Для этого используйте событие Change текстового поля, чтобы создать инструкцию SQL, которая будет служить в качестве нового RowSource в списке.
События
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
I have a list box which is based on the worksheet range. I put a button included in my Userform that deletes the selected item inside my listbox whenever it is clicked. And everytime there is a deleted item there, the deleted item should also be removed in my Worksheet range. Here’s my code in removing the item in the listbox:
Private Sub btnRemove_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
ListBox1.RemoveItem (i)
End If
Next i
End Sub
How to remove the deleted item in the worksheet range? Thank you!
asked Oct 26, 2016 at 6:42
kruk22kruk22
1392 gold badges3 silver badges15 bronze badges
3
since you’re using .RemoveItem()
method you must have set your listbox range via its List
property and not with RowSource
one
then you could use this code in your userform code pane:
Option Explicit
Dim listRng As Range '<-- declare a Userform scoped variable of 'Range' type to track the range whose content you fill your ListBox1 with (for instance, in Userform_Initialize())
Private Sub btnRemove_Click()
Dim i As Long
Dim rowsList As String
For i = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(i) Then
ListBox1.RemoveItem i
Else
rowsList = rowsList & i + 1 & " " '<-- update the rows to be confirmed
End If
Next i
If rowsList <> "" Then UpdateListRange Left(rowsList, Len(rowsList) - 1)
End Sub
Sub UpdateListRange (rowsList As String)
Dim addr As String
Dim iRow As Variant
Dim rowsListArr As Variant
rowsListArr = Split(rowsList)
For iRow = UBound(rowsListArr) To LBound(rowsListArr) Step -1
addr = addr & listRng(rowsListArr(iRow)).address(False, False) & ","
Next iRow
If addr <> "" Then addr = Left(addr, Len(addr) - 1)
Set listRng = listRng.Parent.Range(addr)
End Sub
Private Sub UserForm_Initialize()
With Worksheets("List").Range("C32:C41") '<-- change "List" to your actual worksheet name with the range whose content you fill ListBox1 list with
Me.ListBox1.List = Application.Transpose(.Cells) '<-- fill ListBox1 list
Set listRng = .Cells '<-- set the userform scoped range variable to track the "listbox filling" range
End With
End Sub
answered Oct 26, 2016 at 7:52
user3598756user3598756
28.8k4 gold badges17 silver badges28 bronze badges
1
Works fine without the «-1» for whatever reason.
Private Sub btnRemove_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount
If ListBox1.Selected(i) Then
ListBox1.RemoveItem (i)
End If
Next i
End Sub
answered Mar 24 at 15:42
- Remove From My Forums
-
Question
-
Hi,
I am wondering how to write the VBA macro when a user select one or many items from the ListBox to be removed. Can anyone help me achieve that?
Thanks in Advance.
Chuck
Answers
-
Hello again Chuck,
The ListBox needs to be in MultiSelect mode.
The following code is attached to a button that will toggle between MultiSelect and Single Select and changes its caption each time it toggles.
Private Sub CommandButton5_Click()
If CommandButton5.Caption = «Set Multi Select» Then
ListBox1.MultiSelect = 1
CommandButton5.Caption = «Set Single Select»
Else
ListBox1.MultiSelect = 0
CommandButton5.Caption = «Set Multi Select»
End If
End SubYou probably should include some code in the Userform Initialize to set the initial caption plus set the single or multiselect mode for the ListBox. Note that the caption is actually the opposite the the current setting so that it displays what
will be done when clicked. ie. When set to Multi, the caption is Set to Single Select.
Regards, OssieMac
-
Proposed as answer by
Tuesday, May 1, 2012 2:30 AM
-
Marked as answer by
chamdan
Tuesday, May 1, 2012 2:34 AM
-
Proposed as answer by
-
Thank you for the tips OssieMac.
Good night!
Chuck
-
Marked as answer by
chamdan
Thursday, November 8, 2012 1:23 AM
-
Marked as answer by