Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

Dopplete DS dann raus aus Code

Dopplete DS dann raus aus Code
07.12.2008 20:57:00
Macro
Hi,
muss doch noch mal was fragen: der Folgende Code , (hier vom Forum) soll die Spalte B nach Doppelten Einträgen durchsuchen.
Dim Zelle As Range
For Each Zelle In Range("B10:B1000")
If Application.WorksheetFunction.CountIf(Range("B20:B150"), Zelle.Value) GRÖSSER 1 Then
MsgBox "doppelt"
End If
Next
Das funktioniert auch soweit. Wenn ein Doppelter DS gefunden wurde, kommt die MDGBOx und er sucht den nächsten. Dann muss ich immer wieder OK klicken, bis alle doppleten DS durch sind.
Wie ändere ich den Code ab, damit er kleich beim ersten Fund mit einer MSGBOX (Ja/Nein) raus geht.
Bei JA soll ein Code ausgeführt werden, bei Nein soll er ganz raus gehn.
Danke Marko

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dopplete DS dann raus aus Code
07.12.2008 21:30:43
Uwe
Hi Marco,
das sollte so klappen:

Dim Zelle As Range
For Each Zelle In Range("B10:B1000")
If Application.WorksheetFunction.CountIf(Range("B20:B150"), Zelle.Value) > 1 Then
If MsgBox("Aktion?", vbYesNo, "Aktion") = 6 Then
Call DeinCode
End If
Exit Sub
End If
Next


Gruß
Uwe
(:o)

was mach ich denn hier falsch ?
07.12.2008 22:57:00
Macro
Hi Uwe,
Danke, Dein Code funktioniert , nur wenn ich ihn bei mir einfüge , habe ich noch Probleme:

Sub Prüfen()
Dim Zelle As Range
For Each Zelle In Range("B10:B150")
If Application.WorksheetFunction.CountIf(Range("B10:B150"), Zelle.Value) > 1 Then
If MsgBox("Aktion?", vbYesNo, "Aktion ?") = 6 Then
Call Daten_zusammenfassen
End If
Exit Sub
End If
Next
Call Kopieren
End Sub


Also, wenn der Code durchgeführt wird, dann findert der Code doppelte Einträge, es öffnet sich die MSGBox , wenn ich dann ja klicke, wird der Code Daten_Zusammenfassen ausgeführt.
Soweit passt das noch.
Nun sollte die


Sub Daten_Zusammenfassen  erst fertig sein, bevor es mit der 

Sub Call Kopieren weitergeht.
der Code Call Kopieren wird aber wohl gleich ausgeführt, egal ob Daten_Zusammenfassen fertig  _
ist oder nicht.
Wie warte ich denn, bis der Code Call Kopieren ausgeführt werden kann, bzw. wann weiss die eine  _
Sub, dass die andere noch nicht fertig ist.
Oder mache ich gernerell was falsch ?
Danke
Gruss
Marko

Anzeige
So wie Prüfen jetzt aussieht, wird...
08.12.2008 03:55:46
Luc:-?
...jedes Mal, wenn die Anzahl der Zellen gleichen Werts im untersuchten Bereich >1 ist, die MsgBox ausgelöst. Egal wie du ihr antwortest wird die Subproz anschließend beendet und nichts kopiert. Kopiert wird nur, wenn keine doppelten Zellwerte auftreten. Wenn auch im ersten Fall kopiert wdn soll, musst du Exit Sub durch Exit For ersetzen, Marko.
Gruß Luc :-?
das war eigentlich nicht das Problem..
08.12.2008 07:07:51
Macro
..
Hi Luc,
so solte es aber auf jeden Fall sein, dass Kopieren ausgeführt wird, das Pronlem, die SUB KOpieren hat schon angefangen, bevor die SUB Daten_zusammenfassen fertig war.
Das Daten_zusammenfassen ist eine grosse excel Liste, wo einiges zu tun ist. Erst wenn der Prozess fertig ist , soll kopiert werden. das Kopieren fängt aber unmittelbar nach den zusammenfassen statt.
Ich muss irgend wie das Zusammenfassen abwarten können.
Gruss
Marko
Anzeige
AW: das war eigentlich nicht das Problem..
08.12.2008 10:43:00
Erich


Hi Marko,
Luc hat dir das schon geschrieben:
Wegen des


Exit Sub

wird "Kopieren" nie ausgeführt, wenn doppelte Zellwerte auftreten.
Außerdem läuft in VBA alles schön hintereinander in einem einzigen Prozess - und nicht gleichzeitig - ab.
Wenn bei dir "Kopieren" läuft, dann nicht, während "Daten_zusammenfassen" aufgeführt wird.
Könnte es sein, dass "Kopieren" woanders gestartet wird? Etwa durch eine Ereignisprozedur?
Du kannst herausbekommen, von wo aus "Kopieren" aufgerufen wird:
Am Ende "Kopieren"-Prozedur schreibst du Stop in eine neue Zeile (jedenfalls vor dem "End").
Wenn der Code läuft, hält VBA beim Stop an. Mit F8 kannst du schrittweise fortsetzen und sehen,
wohin VBA nach "Kopieren" zurückkehrt.
Danach kannst du mit F5 den Rest schnell ablaufen lassen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: das war eigentlich nicht das Problem..
08.12.2008 18:58:47
Macro
HI,
muss ich doch mal nachprüfen. Vorerst Danke mal.
Gruss
Marko

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige