Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Macroaufrufe sinnvoll bündeln

Forumthread: Macroaufrufe sinnvoll bündeln

Macroaufrufe sinnvoll bündeln
07.08.2005 13:13:12
Lorenz
Hallo zusammen !
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
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 14:41:57
Leo
Hi,
warum wird die Sub mehrfach aufgerufen? Laut deines Codes wird immer
Set AlleZellen = Range("B19:B65536")
verarbeitet.
mfg Leo
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 14:56:22
Lorenz
Hi Leo!
Es wird nicht nur der selbe code aufgerufen, sondern
Sub`s: EntferneDupliLfd(),EntferneDupliLfdNeu(), EntferneDupliDatum()
z.B.
1. Sub = Set AlleZellen = Range("B19:B65536")
2. Sub = Set AlleZellen = Range("AB19:AB65536")
3. Sub = Set AlleZellen = Range("C19:C65536") ect....
Grüsse Lorenz
Anzeige
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 15:12:09
Leo
Hi,
in dem von dir geposteten Code steht Set AlleZellen = Range("B19:B65536"), der Bereich
ist also fest verdrahtet. Soll das bedeuten, du hast den Code 'zig mal nur jeweils
mit anderer Adressierung? Wozu dann das Unterprogramm?
mfg Leo
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 15:22:23
Lorenz
Hallo Leo!
Genau so is es: "'zig mal nur jeweils mit anderer Adressierung & in verschiedene ComboBoxen eingelesen"
Grüss Lorenz
Anzeige
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 15:26:38
Leo
Hi,
lad mal ein Beispiel hoch.
mfg Leo
AW: Macroaufrufe sinnvoll bündeln
07.08.2005 16:56:05
Leo
Hi,
ist mir zuviel Arbeit.
mfg Leo
Anzeige
AW: Macroaufrufe sinnvoll bündeln
08.08.2005 11:09:45
MichaV
Hallo Lorenz,
ich hab mir das nicht im Detail angeguckt, aber wenn Du sagst, daß die Makros identisch sind bis auf die Adresse und die Combobox, dann übergib diese beiden Werte doch auch als Argumente an EIN Makro. Das könnte dann so aussehen (ungetestet)

Sub EntferneDupli(Adresse As String, Box as ComboBox)
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(Adresse)   '<------
...Code Code Code...
Box.AddItem Item  '<----

Gruss- Micha
PS: Rückmeldung wäre nett.

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige