Страницы: 1
RSS
Как перебрать контролы на листе, а не на форме?
 
здравствуйте, на форме существуют контролы и я порхожу по ним    
Private Sub CommandButton_print_Click()  
Dim cntrl As Control  
For Each cntrl In UserForm1.Controls  
If TypeName(cntrl) = "ComboBox" Then  
   cntrl.ShowDropButtonWhen = fmShowDropButtonWhenAlways  
   cntrl.SpecialEffect = fmSpecialEffectSunken  
End If  
Next cntrl    
 
а как сделать то же самое для контролов на листе? не пойму что должно стоять вместо UserForm1???  
спасибо
 
For Each cntrl In ActiveSheet.OLEObjects  
 
Вот так должно получиться
 
Не совсем так.  
 
For Each x In Me.OLEObjects  
   Set cntrl = x.Object  
   If TypeName(cntrl) = "ComboBox" Then  
       cntrl.ShowDropButtonWhen = fmShowDropButtonWhenAlways  
       cntrl.SpecialEffect = fmSpecialEffectSunken  
   End If  
Next x
 
Вот здесь есть пример работы с элементами управления 2 типов на листе Excel:    
http://excelvba.ru/code/checkboxes
 
спасибочки огромное!  
а может кто знает почему он не переваривает там же метод cntrl.Visible = True ?  
если убрать работает?..  
If TypeName(cntrl) = "TextBox" Then  
   If cntrl.Text = "" And cntrl.Visible = True Then  
.....
 
Потому что свойство Visible контролируется контейнером - ОЛЕобъектом, т.е.  
 
If cntrl.Text = "" And x.Visible Then
 
Спасибо -работает!
Страницы: 1
Читают тему
Наверх
Loading...