Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать адрес ячейки, заполненной по определенному правилу? Excell VBA  (Прочитано 11739 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SerialKilla
Гость
« : 24-02-2009 21:48 » 

Как узнать адрес ячейки, заполненной по определенному правилу, для передачи данных в comboBox?
Допустим есть столбец с записями 2х типов t1,t2,gst1,t3,gst2,gst3. Все записи типа gst... надо поместить в comboBox.
Запись всех ячеек из столбца подряд я вел следующим образом:

i = 1
Do While IsEmpty(Worksheets("Лист2").Cells(i, 1)) = False
cbxStill.AddItem (Worksheets("Лист2").Cells(i, 1))
i = i + 1
Loop

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

ru
Offline Offline

« Ответ #1 : 25-02-2009 09:10 » 

а что значит
Все записи типа gst
?
Записан

I Have Nine Lives You Have One Only
THINK!
SerialKilla
Гость
« Ответ #2 : 25-02-2009 10:21 » 

а что значит
Все записи типа gst
?
все записи начинающиеся с букв gst
Записан
SerialKilla
Гость
« Ответ #3 : 25-02-2009 11:28 » 

Карочи дал я дупля как это сделать Ага Всем спасибо за внимание! А кому интересно смотрите:

i = 1
Do While IsEmpty(Worksheets("Лист2").Cells(i, 1)) = False   ' проверяем не пуста ли ячейка
If InStr(1, Worksheets("Лист2").Cells(i, 1), "gst") <> 0 Then ' проверяем содержит ли она набор букв gst
cbxGst.AddItem (Worksheets("Лист2").Cells(i, 1))                 ' добавляем значение в combo box                     
End If
i = i + 1
Loop

Корявенько, однако работает Ага Если у кого есть иные предложения, буду рад ознакомиться. Класс!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #4 : 26-02-2009 06:02 » 

Решение хорошее
вот еще вариант
Код:
Public Sub test()
    Dim r As Range
   
    Set r = ThisWorkbook.Worksheets(1).Columns("A:A")
   
    With r
        Set c = .Find("gst", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            cbxGst.AddItem c.Value
            Do
                Set c = .FindNext(c)
                cbxGst.AddItem c.Value
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
End Sub
Записан

I Have Nine Lives You Have One Only
THINK!
SerialKilla
Гость
« Ответ #5 : 26-02-2009 09:51 » 

Спасиб HandKot... Только вот мои познания в VBA еще слабовты, чтобы понять как это работает Не понял.  Я так понял этот код полностью просмотрит столбец A и не прервет программу если встретит пустую ячейку, верно? То чего я совсем не понял- это строка "Not c Is Nothing" Это что? И с функцией "Set" чё т тоже не знаком. Ну ладно не буду много глупых вопросов задавть...Хорошо бы справку на VBA на русском найти.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 26-02-2009 10:39 » 

SerialKilla,
>>Я так понял этот код полностью просмотрит столбец A и не прервет программу если встретит пустую ячейку, верно?
верно.

>>То чего я совсем не понял- это строка "Not c Is Nothing"
ты получаешь список (с) найденных строк. здесь просто неудачное определение переменной результата,
например
Set ListFinding = .Find("gst", LookIn:=xlValues)
if Not ListFinding Is Nothing - проверка на пустой результат
Так понятнее? Nothing (ничего, пусто )

Set - создание нового экземпляра объекта

Это что? И с функцией "Set" чё т тоже не знаком. Ну ладно не буду много глупых вопросов задавть...Хорошо бы справку на VBA на русском найти.
[/quote]
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #7 : 26-02-2009 11:26 » new

Спасиб HandKot... Только вот мои познания в VBA еще слабовты, чтобы понять как это работает Не понял.  Я так понял этот код полностью просмотрит столбец A и не прервет программу если встретит пустую ячейку, верно? То чего я совсем не понял- это строка "Not c Is Nothing" Это что? И с функцией "Set" чё т тоже не знаком. Ну ладно не буду много глупых вопросов задавть...Хорошо бы справку на VBA на русском найти.
это макрос из хелпа, с доавлением одной строки - добавление элемента в комбо
если у Вас значений не очень много, где надо искать, то используйте свой код
если же много, то с Find лучше
Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines