Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828

Удалить значение из комбобокса по его названию

28.02.2019, 20:00. Показов 3332. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
pashulka, товарищи....здравствуйте....не пойму как удалить значение из комбобокса по его названию...не по индексу..
я нашел значение FIND-ом нужно его удалить из комбо. копался на форуме, нашел Ваш код с коллекциями. Как подобное сделать с комбо? спасибо

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    With ResultsListObj.Range.Columns(2)
  Set Cell = .Find(EntranceForm.TextBox1, LookIn:=xlValues)
  If Not Cell Is Nothing Then
    firstResult = Cell.Address
    Do
       If Cell.Cells(1, 4) = VBA.Date Then
     
       EntranceForm.ComboBox1.RemoveItem Cell.Cells(1, 3)
'       EntranceForm.ComboBox1.AddItem Cell.Cells(1, 3)
'   EntranceForm.ComboBox1.Items.Delete (Cell.Cells(1, 3))
   
       End If
      Set Cell = .FindNext(Cell)
    Loop While Not Cell Is Nothing And Cell.Address <> firstResult
  End If
  End With






Цитата Сообщение от pashulka Посмотреть сообщение
Можно использовать не только индекс, но и ключ
Dim c As New Collection
c.Add "Иванов", "Иванов"
c.Remove "Иванов"
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2019, 20:00
Ответы с готовыми решениями:

Как найти узел в TreeView по названию или определить его номер по названию?
Добрый день! Помогите, пожалуйста. Есть treeView с тремя ветками. Каждый объект aT проверяется на соответствие категории....

Как из собственного объекта выдернуть значение свойства по его названию?
Столкнулся с ситуацией когда из своего экземпляра класса нужно получить значение свойства по имени самого свойства. Для большего понимания...

Как удалить запись из комбобокса?
В комбобокс добавляется ненужные мне записи и именами 1 и 2. Мне нужно удалить их программно(через код), как?

9
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
28.02.2019, 20:16
Лучший ответ Сообщение было отмечено mor_sergey как решение

Решение

mor_sergey, Если Вы не собираетесь удалять ячейки(строки) из исходной таблицы, то просто работайте с элементом управления, например :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Text
 
Private Sub CommandButton1_Click()
    Dim t$, i&, a
    t = TextBox1.Value ' t = Trim(TextBox1)
    If t = "" Then Exit Sub
    
    a = ComboBox1.List
    For i = UBound(a) To 0 Step -1
        If a(i, 0) = t Then ComboBox1.RemoveItem i
    Next
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
28.02.2019, 21:08  [ТС]
pashulka, сделал....вставил Ваш код в мой Фаинд. Все работает. Спасибо
0
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
03.03.2019, 16:54  [ТС]
pashulka, не могу условие придумать...например когда значение ТБ1 есть в таблице, комбо удаляет значения по условию...но вот если в тб1 найдено не то, и удаляем неверные символы и переписываем(все в одном событии)(не выгружая формы), то значения комбо меняются по непонятному мне алгоритму)
не могу придумать как исправить.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 Dim t$, i&, a
  
'       EntranceForm.ComboBox1.Clear
      With ResultsListObj.Range.Columns(2)
 Set Cell = .Find(EntranceForm.TextBox1, lookat:=xlWhole, LookIn:=xlValues)
  If Not Cell Is Nothing Then
    firstResult = Cell.Address
    Do
 t = Cell.Cells(1, 3)
 EntranceForm.TextBox2 = Cell.Cells(1, 2)
'  EntranceForm.ComboBox1.List = Array(" тут значения комбо по умолчанию) '?
 a = EntranceForm.ComboBox1.List
' If EntranceForm.ComboBox1 Then
    For i = UBound(a) To 0 Step -1
        If a(i, 0) = t Then EntranceForm.ComboBox1.RemoveItem i
    Next
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
03.03.2019, 18:11
Нет в представленном огрызке ни удаления неверных символов, ни переписывания (не считая комментариев)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CommandButton1_Click()
    Dim t$, i&, r As Range, c As Range, a
    t = TextBox1.Value: If t = "" Then Exit Sub
    Set r = Range("Таблица1") 'Таблица1 имя умной таблицы
    Set c = r.Columns(2).Find(t, , xlValues, xlWhole)
    If Not c Is Nothing Then
       t = c(1, 3): TextBox2.Value = c(1, 2)
       a = ComboBox1.List
       For i = UBound(a) To 0 Step -1
           If a(i, 0) = t Then ComboBox1.RemoveItem i
       Next
    Else
       TextBox1.Value = ""
    End If
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
03.03.2019, 19:50  [ТС]
pashulka, такой код работает только раз....чтобы работа снова, нужно выгрузить форму...закрыть процедуру.
с комбобоксом не знаю как разобраться. с его данными. когда значения текстбокс 1 меняются, меняться доблжен и комбо.и тут непонятное что-то творится
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
03.03.2019, 20:27
mor_sergey, Тогда предлагаю дождаться экстрасенсов, которые поймут, что мешает повторно удалять ненужные данные из комбобокса. Я лишь могу предположить, что, возможно, Вам необходимо возвращать обратно удалённые данные...
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
03.03.2019, 21:30  [ТС]
pashulka, мне цикл закончить для комбо как-то нужно...
первое значение отработало,комбобокс поменялся, убираешь DEL старое из текстбокса 1 и пишешь новое, макрос его находит и подтягивает все по плану, а вот с комбобоксом непонятно. не знаю как быть
по задумке если тест пройден, из комбо удаляется этот тест.
и получается, если человек (ТБ1, меняется, комбо, вместо того, чтобы меняться и подтягивать данные человека, делает непонятно чего)...а без do loop не обновляет комбо как надо
[VB]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub TextBox1_AfterUpdate() ' вместо change, т.к. для меня удобнее
 Dim t$, i&, a, Cell As Range
 
      With ResultsListObj.Range.Columns(2)
 Set Cell = .Find(EntranceForm.TextBox1, lookat:=xlWhole, LookIn:=xlValues)
  If Not Cell Is Nothing Then
    firstResult = Cell.Address
    Do
 If Cell.Cells(1, 5) Like "*Тест пройден*" Then
  t = Cell(1, 3): EntranceForm.TextBox2.Value = Cell(1, 2)
' EntranceForm.TextBox2 = Cell.Cells(1, 2)
 a = EntranceForm.ComboBox1.List
    For i = UBound(a) To 0 Step -1
        If a(i, 0) = t Then EntranceForm.ComboBox1.RemoveItem i
  Set Cell = .FindNext(Cell)
    Loop While Not Cell Is Nothing And Cell.Address <> firstResult
  End If
  End With
    Next
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
03.03.2019, 23:37
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim t$, i&, a$, r As Range, c As Range, arr
    t = TextBox1: If t = "" Then Cancel = True
    Set r = Range("Таблица1").Columns(2)
    Set c = r.Find(t, , xlValues, xlWhole)
    If Not c Is Nothing Then
       a = c.Address
       Do
            t = c(1, 3): arr = ComboBox1.List
            For i = UBound(arr) To 0 Step -1
                If arr(i, 0) = t Then ComboBox1.RemoveItem i
            Next
            Set c = r.FindNext(c)
       Loop Until a = c.Address
    Else
       TextBox1 = ""
    End If
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
04.03.2019, 16:35  [ТС]
pashulka, код придумал свой, Ваш не проверял. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2019, 16:35
Помогаю со студенческими работами здесь

Значения второго комбобокса зависят от значений первого комбобокса
Мужики, есть два комбо бокса, нужно чтобы значения второго комбо бокса зависели от того, которое выбрано в первом... Как это сделать? ...

Значение комбобокса в запросе
Доброго времени суток! есть такой вопрос, как сделать чтоб запрос брал знначение из комбобокса SELECT StrName FROM Comm_Str WHERE...

О выбранном значении из комбобокса и его влиянии на остальные значения
Доброго времени суток! Есть вот такое окошечко. В окошечке много комбобоксов (объем двигателя и КПП, которые накрыло - тоже комбо) и...

Как записать строковое значение комбобокса
При записи в таблицу mysql, пишется числовое значение keyfield, нужно строковое значение listfield, подскажите, как реализовать... Экшн...

Получить значение комбобокса в виде строки
То, что мы видим в комбобоксе, это ComboBox2.DisplayMember, например, ФИО. Хочу выдернуть значение комбобокса в виде строки, т.е., не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru