Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
648to652
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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
Anzeige
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
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
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige