Страницы: 1
RSS
VBA метод Find()
 
Здравствуйте! подскажите что не так?!    
Private Sub ComboBox1_Change()  
With Sheets(1)  
    Set r = .Range(.[A4], .Range("A" & .Rows.Count).End(xlUp))
    Set x = r.Find(What:=Me.ComboBox1.Value, LookIn:=xlFormulas, LookAt:=xlWhole)  
       If Not x Is Nothing Then  
       Me.ComboBox2 = x.Offset(, 1)  
       Me.TextBox1 = x.Offset(, 2)  
       End If  
End With  
End Sub  
если в столбце А просто значение, то все нормально, а если там формула, то ни чего не происходит.  
 
посмотрите пример. выбирая в первом комбо первые два значения все нормально, а последнее не работает.
 
Попробуйте поменять xlFormulas на xlvalues
 
Спасибо Юрий М! Большое спасибо.
 
AKSENOV048, на будущее: курсор в слово Find нажимаете F1 и читаете) Меня уже не раз выручала : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Спасибо Nerv, учту обязательно.
 
что то этот F1 мне не помог)  
появилась такая проблема:  
 
Private Sub CommandButton1_Click()  
With Sheets(1)  
    Set r = .Range(.[A4], .Range("A" & .Rows.Count).End(xlUp))
    Set x = r.Find(What:=Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)  
       If Not x Is Nothing Then  
        x.Offset(, 1) = Me.ComboBox2  
        x.Offset(, 2) = Me.TextBox1  
        x.Offset(, 3) = Me.TextBox2  
       End If  
End With  
End Sub  
 
если в форме выбрать 1 и изменить другие поля, то все изменения сохраняются; а вот сли выбрать проба2:инфо2 или проба3:инфо3 и изменить их поля, то сохраниться только изменение поля Критерий.    
что не так?
 
Попробуйте так
 
AKSENOV048, очень тяжело с такими значениями: Проба2:Инфо2... Можно более приземлённо? Попытался воспроизвести - запутался.
 
Интересный эффект:)  
По F8 отслеживал?  
Думаю это потому, что в комбо значения заносятся из RowSource, и поэтому при изменении в процессе RowSource происходит изменение комбо.  
Попробуй взять значения в массив и заполнять комбо из массива. Ну или через переменные.
 
Юрий М значение данных не так важно.  
смысл в том что: почему то со значениями работает, а с формулами нет.  
хто-то, спасибо Вам большое! а то я всю голову сломал. да и сейчас все равно не понял. не объясните?
 
Hugo моя логика сейчас лопнет, блин до сих пор не соображу почему с формулами не работает, а без формул все норм.(
 
О, а хово-то я и не заметил :)  
Тут главное - отрубить обновление комбо2 при изменении в его RowSource. При клике по кнопке.
 
Вернее, влияет RowSource первого комбо - изменяются влияющие ячейки, в А пересчитывается, значит комбо нужно обновить.
 
Да, проверил - стёр Rowsource, добавил в форму код:  
 
 
Private Sub UserForm_Activate()  
Dim a()  
a = Лист1.[a4:a6].Value
Me.ComboBox1.List = a  
End Sub
 
И даже без массива можно:  
 
Private Sub UserForm_Activate()  
Me.ComboBox1.List = Лист1.[a4:a6].Value
End Sub
 
все до меня дошло наконец. но сам бы я в жизни не справился.
 
Ну почему - по F8 отследил, что происходит, ищешь почему так.
 
я отслеживал, но видно третий час ночи дает о себе знать.)
Страницы: 1
Читают тему
Наверх