powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить значение из комбобокса
12 сообщений из 12, страница 1 из 1
Удалить значение из комбобокса
    #36981286
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
k =  0 
For i =  1  To Form1.Combo1.ListCount
Form1.Combo1.RemoveItem "1"
Form1.Combo1.Refresh
Next
End Sub

Пишет ошибку runtime error 5 invalid procedure call or argument. Почему?
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981297
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще какой-то ужас написал) Совсем голова не варит уже. В общем нужно пройтись по записям комбобокса, и если она равна 1 - удалить ее.
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981301
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у вас точно есть В комбо символьное значение "1"?
Иначе тогда надо удалять по индексу
Код: plaintext
1.
2.
3.
4.
i = Form1.Combo1.ListCount
do while i >  0 
   Form1.Combo1.RemoveItem i
   i = Form1.Combo1.ListCount
end do
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981305
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

тока нумерация индексов с нуля и до ListCount-1 ))
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981310
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsЯ вообще какой-то ужас написал) Совсем голова не варит уже. В общем нужно пройтись по записям комбобокса, и если она равна 1 - удалить ее.
А, ну тогда
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  1 
do while i <= Form1.Combo1.ListCount
   if Form1.Combo1.Item(i) =  1  then
      Form1.Combo1.RemoveItem i
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981313
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proтока нумерация индексов с нуля и до ListCount-1 ))
Как ТС просил - так и отвечено. Может, у него Option Base 1 .
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981319
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMShocker.Proтока нумерация индексов с нуля и до ListCount-1 ))
Как ТС просил - так и отвечено. Может, у него Option Base 1 .

Option Base не влияет на нумерацию индексов.
А вот вопрос, ты для офиса (хи-хи, любитель офиса) код писал?
А то ТС-то среду не указал, однако.
А в VB-шном комбобоксе Item нету ))
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981334
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Command1_Click()
z = Form1.Combo1.ListCount -  1 
For i =  0  To z
Form1.Combo1.ListIndex = i
If Form1.Combo1.Text = "1" Then
Form1.Combo1.RemoveItem i
z = z -  1 
ElseIf Form1.Combo1.Text = "2" Then
z = z -  1 
End If
Next
End Sub
В общем проблема в том, что при удалении записей количество итераций цикла нужно уменьшить.
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981344
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА вот вопрос, ты для офиса (хи-хи, любитель офиса) код писал?
А то ТС-то среду не указал, однако.
А в VB-шном комбобоксе Item нету ))
Каюсь, грешен...
Смотрим:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  0 
do while i < Form1.Combo1.ListCount
   if Left(Form1.Combo1.List(i), 1 ) = "1" then
      Form1.Combo1.RemoveItem (i)
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981374
AndreTMСмотрим:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  0 
do while i < Form1.Combo1.ListCount
   if Left(Form1.Combo1.List(i), 1 ) = "1" then
      Form1.Combo1.RemoveItem (i)
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
и зачем на каждом шаге дергать несчастный Combo1 ?
в Do Loop цикле граница вычисляется на каждом шаге, в For - один раз перед выполнением цикла. Почувствуйте разницу..
Код: plaintext
1.
2.
3.
4.
 For i = Combo1.ListCount - 1  to  0  Step - 1 
   If {some condition} Then 
      {do something}
   End If
Next i
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981379
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

Ну это так, тупо и прямо. И чтобы напомнить ТС как раз о невозможности использования цикла со счетчиком с положительным инкрементом. Оптимизация алгоритма в задачу не входила
...
Рейтинг: 0 / 0
Удалить значение из комбобокса
    #36981383
AndreTM,
это не оптимизация, это азбука. ИМХО, конечно.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить значение из комбобокса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]