Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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
For each Schleife beenden
11.02.2016 14:05:42
Florian
Hallo zusammen,
ich habe folgendes Problem.
Ich suche in einer Spalte in der Buchstaben stehen und auch leere Zellen vorkommen über for each zelle in selection anhand ein Range einen bestimmten Buchstaben.
Leider schaffe ich es nicht den Suchlauf zu beenden obwohl die Range nach unten fix ist.
Bin für jede Hilfe dankbar!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For each Schleife beenden
11.02.2016 14:13:19
Peter
Hallo Florian,
dann selektiere einige Zellen und lass einmal das beigefügte Makro laufen.
Option Explicit
Public Sub Suchen()
Dim rZelle  As Range
For Each rZelle In Selection
MsgBox rZelle.Address(0, 0)
Next rZelle
End Sub

Gruß Peter

AW: For each Schleife beenden
11.02.2016 20:11:41
Piet
hallo
hier mal ein paar praktische Beispiele wie man einen Suchlauf beenden kann.
Eine For Next Schleife ist nur sinnvoll bei kleinen Datenmengen, ca. 100 Zeilen.
Viel eleganter und schneller ist die Find Methode, die man mittels Set Anweisung
ausführen lassen kann, wenn man nur eine Adresse finden will, oder die Standard
Cells.Find().Activate Methode, wenn man die Zelle direkt anspringen will.
Was man waehlt ist völlig wurscht. Jede Methode funktioniert. s. Beispiele
Die Eingabe des Suchnamen kann über eine Zelle erfolgen, hier A1 oder InpuBox.
mfg Piet
'Such-Name gefunden, Aussprung mit Exit For (ohne Aktion)
Sub Suche_beenden_in_For_Next_Schleife()
SuName = Range("A1")   'Suchname in A1
For Each i In Selection
If i.Value = SuName Then Exit For
Next i
End Sub

'Such-Name gefunden, Aktion starten, dann Exit For (mit Aktion)
Sub Suche_beenden_nach_Kopiervorgang()
SuName = Range("A1")   'Suchname in A1
For Each i In Selection
'Such-Name gefunden, Aktion starten, dann Exit For
If i.Value = SuName Then
i.Copy   'kopiere Zelle in Blatt2 - nur Werte, oder alles
Sheet("Blatt2").Range("A1").PasteSpecial xlAll     '(xlValues)
Application.CutCopyMode = False
Exit For
End If
Next i
End Sub

'** Bei der Set Anweisung wird die Zelle -nicht angesprungen-, nur eine Adresse zurückgegeben
' Fehlerfall Auswertung erfolgt über İf rFind Is Nothing ...
Sub Suchen_über_Set_Anweisung()
SuName = Range("A1")   'Suchname in A1
SuName = InputBox("Bitte Buchstaben eingeben")
If SuName = Empty Then Exit Sub
Set rfind = Cells.Find(What:=SuName, After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole,  _
MatchCase:=True)
If rfind Is Nothing Then MsgBox SuName & "  Buchstabe nicht gefunden"  'Fehler:  "Nicht  _
gefunden"
SuchAdr = rfind.Address   'gefundene Adresse
rfind.Select              'Zelle anspringen
MsgBox SuchAdr            'Text ausgeben
Exit Sub
End Sub

'** Bei Suchen über Find().Activate wird die Zelle -direkt angesprungen-
' im Fehlerfall erfolgt eine Laufzeit Fehlermeldung die man abfangen kann
Sub Suchen_über_Suchen_Cells()
SuName = Range("A1")   'Suchname in A1
SuName = InputBox("Bitte Buchstaben eingeben")
If SuName = Empty Then Exit Sub
On Error GoTo Fehler
'** Bei Suchen über Activate wird die Zelle -direkt angesprungen-
'Suche im ganzen Blatt nach Buchstabe  xlWhole = ganze Zelle
Cells.Find(What:=SuName, After:=[a1], LookIn:=xlFormulas, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True).Activate
SuchAdr = ActiveCell.Address   'gefundene Adresse
Exit Sub
Fehler:  MsgBox SuName & "  Buchstabe nicht gefunden"  'Fehler:  "Nicht gefunden"
End Sub

'zum testen SuName bis On Error noch einsetzen (siehe oben)
Sub Suchen_über_Suchen_Range()
'Suche im bestimmten Bereich nach Buchstabe  xlWhole = ganze Zelle
Range("A1:B200").Find(What:=SuName, After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True).Activate
End Sub

'zum testen SuName bis On Error noch einsetzen (siehe oben)
Sub Suchen_über_Suchen_Cells()
'Suche in bestimmten Spalten nach Buchstabe  xlWhole = ganze Zelle
Columns("A:B").Find(What:=SuName, After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True).Activate
End Sub

Anzeige
AW: For each Schleife beenden
17.02.2016 09:54:10
Florian
Vielen Dank für eure Antworten.
Ich hab das Problem mit der Find-Methode das ich mit ihr keine Schleife hinbekommen mit Findnext.
In der Spalte A stehen verschiedene Buchstaben und dazwischen sind leere Zellen und ich möchte anhand der Spalte A Daten aus anderen Spalten weiter verarbeiten.
Die ganzen Beispiele die ich finde funktionieren leider nicht mit leeren Zellen und ich weiß nicht wie ich das anpassen muss.

AW: For each Schleife beenden
17.02.2016 09:59:58
Florian
s.o.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige