Resim problem. Mam 31 ComboBoxu na jednom liste a mam promenlivy pocet listu (+-8). Chci vsechna Comba osetrit jednou procedurou (a samozrejme se mi nechce ke kazdemu CB osetrovat udalost Change). Zatim to resim takto:

mam ClassModule pojmenovany ComboClass a v nem toto:

Public WithEvents ComboGroup As ComboBox

Private Sub ComboGroup_Change()
MsgBox "working!" 'jen priklad toho co by mel udelat
End Sub


Pak mam proceduru, ktera nacpe vsechny ComboBoxy ve vsech listech do te ComboGroup, aby delali vsichni to same:

Dim Comba() As New ComboClass 'globalni promenna

Private Sub Naplneni()
Dim PocetPrvku As Integer
Dim Prvky As OLEObjects
Dim Prvek As OLEObject
Dim Listy As Sheets
Dim List As Worksheet

Set Listy = ThisWorkbook.Sheets
PocetPrvku = 0

For Each List In Listy
For Each Prvek In List.OLEObjects
If TypeName(Prvek.Object) = "ComboBox" Then
Prvek.ListFillRange = "List1!D6:D9"
Prvek.Object.ListIndex = 0
PocetPrvku = PocetPrvku + 1
ReDim Preserve Comba(1 To PocetPrvku)
Set Comba(PocetPrvku).ComboGroup = Prvek.Object
End If
Next Prvek
Next List
End Sub


toto funguje perfektne, problem je v tom ze "Naplneni" se musi volat pri kazdem spusteni aplikace a pri pridani nejakeho listu s Combama. Taky me trochu stve doba provedeni, cca 300 CB trva 0.2sec, coz se mi zda celkem dlouho (testovano na duron 1800@2000MHz). Chtel bych to udelat tak, aby se ty CB nemuseli cpat do te ComboGroup, aby proste od te chvile co je polozim na list bud jiz byly cleny, nebo nejaky jiny zpusob, jak udelat aby vsechny CB delali totez.

Dekuji vsem za rady!