Страницы: 1
RSS
Как обратиться к элементам управления на рабочем листе?
 
Вобщем, пишу процедуру которая будет проверять, заполнены ли все Combobox на рабочем листе.  
 
(1) Function Correct() As Boolean  
(2)  Dim pol As MSForms.Control  
(3)  Correct = True  
(4)  For Each pol In ActiveSheet.Controls  
(5)   If TypeOf pol Is MSForms.Combobox and pol.Value = Empty Then  
(6)    Correct = False  
(7)   End If  
(8)  Next  
(9) End Function  
 
 
 
В строке 4 выдает: Object doesn't support this property or method (Error 438)    
 
Вместо ActiveSheet.controls пытался вводить Worksheets("Имя листа").controls, Sheets("Имя листа").controls - ниче не помогает.  
Как обратиться к ЭУ на рабочем листе?
 
Function Correct() As Boolean  
   Correct = True  
   For Each pol In ActiveSheet.OLEObjects  
       If TypeOf pol.Object Is MSForms.ComboBox Then  
           Correct = Correct And Len(pol.Object.Value)  
       End If  
   Next  
End Function  
 
Sub test()  
   Debug.Print Correct  
End Sub
 
{quote}{login=EducatedFool}{date=11.11.2010 08:01}{thema=}{post}Function Correct() As Boolean  
   Correct = True  
   For Each pol In ActiveSheet.OLEObjects  
       If TypeOf pol.Object Is MSForms.ComboBox Then  
           Correct = Correct And Len(pol.Object.Value)  
       End If  
   Next  
End Function  
 
Sub test()  
   Debug.Print Correct  
End Sub{/post}{/quote}  
 
 
С таким  решением как  
{quote} Correct = Correct And Len(pol.Object.Value){/quote}  
при работе с переменной Boolean я еще не сталкивался. Ну и то, что ошибок вылазить не будет, если объект попадется не ComboBox, тоже понял. Спасибо!
 
А чо собсно удивляться то?  
Ведь ответил сам Йодо - учитель Джедаев! У него ещё не таким приёмам научиться можно...  
:-)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=vatras}{date=11.11.2010 07:26}{thema= заполнены ли все Combobox на рабочем листе.{/post}{/quote}  
Да - простой цикл перебора контролов на листе с проверкой типа контрола: как только встречаем пустой ComboBox - выводим сообщение и выходим из процедуры.
 
Worksheets().Controls("ComboBox" + CStr(i))
Страницы: 1
Читают тему
Наверх
Loading...