Macroaufrufe sinnvoll bündeln
07.08.2005 13:13:12
Lorenz
Ich benötige mal wieder eure Hilfe (die ich lobenswerter Weise in diesem Forum am laufenden Band erhielt)
Mit untenstehenden Code rufe bzw. sortiere ich in Folge mehrere Bereiche in mehrere ComboBoxen. In der UF. Inizialize wird der Code mittels "Call EntferneDupliLfd("B19:B65500")" aufgerufen. Dieser Code wird in leicht geänderter Form bis zu zehn mal aufgerufen (Dauert natürlich dementsprechend lange bis 30 Sec u. länger)
Jetzt meine Frage: Ist es möglich bzw. sinnvoll die bis zu zehnmal Aufrufe auf einen zusammen zu fassen, oder soll er so bleiben wie`s ist.
BereichsBeispiele
Set AlleZellen = Range("B19:B65536") ....ComboBox3.AddItem Item
Set AlleZellen = Range("AB19:AB65536") ....ComboBox6.AddItem Item
Set AlleZellen = Range("C19:C65536") ....ComboBox7.AddItem Item
Set AlleZellen = Range("CC19:CCB65536") ....ComboBox9.AddItem Item
Set AlleZellen = Range("BB19:BB65536") ....ComboBox11.AddItem Item
Hier der Code:
Public von&, bis&, n&
Public SuchDatenLfd()
Sub EntferneDupliLfd(Adresse As String)
Dim AlleZellen As Range, Zelle As Range
Dim AnzAlle As Long, AnzOhneDupl As Long
Dim OhneDupl As New Collection
Dim i As Long, j As Long
Dim Swap1, Swap2, Item
Set AlleZellen = Range("B19:B65536")
von = AlleZellen.Row
bis = von + AlleZellen.Count - 1
On Error Resume Next
For Each Zelle In AlleZellen
OhneDupl.Add Zelle.Value, CStr(Zelle.Value)
Next Zelle
On Error GoTo 0
AnzAlle = AlleZellen.Count
AnzOhneDupl = OhneDupl.Count
For i = 1 To OhneDupl.Count - 1
For j = i + 1 To OhneDupl.Count
If OhneDupl(i) > OhneDupl(j) Then
Swap1 = OhneDupl(i)
Swap2 = OhneDupl(j)
OhneDupl.Add Swap1, before:=j
OhneDupl.Add Swap2, before:=i
OhneDupl.Remove i + 1
OhneDupl.Remove j + 1
End If
Next j
Next i
ReDim SuchDatenLfd(0 To AnzOhneDupl - 1)
For n = 0 To UBound(SuchDatenLfd)
SuchDatenLfd(n) = OhneDupl.Item(n + 1)
Next n
For Each Item In OhneDupl
frmProzesse.ComboBox3.AddItem Item
Next Item
End Sub
PS: Es wird jeweils nur (..."Lfd")geändert.
Danke im Voraus &
Grüsse Lorenz