Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen durchlaufen und Bereich prüfen

Zeilen durchlaufen und Bereich prüfen
24.02.2015 07:50:59
Rectranthus
Hallo zusammen
Ich bin im Moment an einem umfangreichen Makro und brauche bei einer Schleife eure Hilfe. :)
Ich habe eine Tabelle, bei der ich jede Zeile abarbeiten möchte. Die Schleife dazu habe ich angepasst, dass würde auch funktionieren.
Nun kommt die Schwierigkeit:
In der Spalte C;H habe ich entweder in einer Zelle einen Wert oder in mehr als einer Zelle einen Wert.
Nun soll geprüft werden, ob nur dieser eine Wert vorhanden ist oder mehrere Werte.
Wenn nur ein Wert vorhanden ist, soll dieser in die Spalte M geschrieben werden, bei mehr als einem Wert soll ein Fehler ausgegeben werden.
Vorlage für die Schleife:
Sub Test()
Dim i As Integer
i = 1
Do While Not Cells(i, 1) = ""
If Cells(i, 1) > 5 Then Cells(i, 2) = 10
i = i + 1
Loop
End Sub

Als Beispiel habe ich noch eine kleine Datei angehängt. Hoffe es ist einigermassen verständlich.
Vielen Dank für eure Tipps.
Grüsse
JP

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW:Bsp.-Mappe fehlt gruss owT
24.02.2015 07:54:53
hary
.

AW: mit Formel!?
24.02.2015 08:57:50
hary
Moin
Das kannst du auch mit Formel machen. Wenn es dir so reicht.



TEST
 M
21.25
31.38
412.50
5Fehler
6Fehler
736.00
838.00
934.00
1036.00
113.83
124.37
134.25
143.30

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
M2:M14=WENN(ANZAHL2(C2:H2)=1;VERWEIS(2;1/(C2:H2<>"");C2:H2);"Fehler")  =IF(COUNTA(RC[-10]:RC[-5])=1,LOOKUP(2,1/(RC[-10]:RC[-5]<>""),RC[-10]:RC[-5]),"Fehler")

http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://hajo-excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 14.02 einschl 64 Bit

gruss hary

Anzeige
AW: AW:Gelöst
25.02.2015 14:38:44
JP
Hallo Hary
Vielen Dank für deinen Tip. Es hat wunderbar geklappt, die komplette Schleife ist nun so aufgebaut:
Sub Ausschnitt()
' Schleife um die Werte zusammenzufassen und für den Druck vorbereiten
iRow = 5 ' Start ab Zeile 5
Do While Not IsEmpty(Cells(iRow, 1)) ' Schleife in Spalte A bis zur ersten leeren Zelle  _
durchführen
Cells(iRow, 10).FormulaR1C1 = "=IF(COUNTA(RC11:RC16)=1,LOOKUP(2,1/(RC11:RC16""""), _
RC11:RC16),""Fehler"")"
iRow = iRow + 1
Loop
' Die Formel in Spalte J in Werte umwandeln
With wb.Worksheets("Test")
.Columns("J:J").Copy
.Columns("J:J").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End With
' Vorhandene Fehler zählen
intFehler = WorksheetFunction.CountIf(Range("J:J"), "Fehler") ' Fehler in Variable übergeben
Debug.Print intFehler
'Meldung für die Fehler nur ausgeben, falls Fehler  0
If intFehler  0 Then
' Schleife um Fehler zu markieren
iRow = 5 ' Start ab Zeile 5
Do While Not IsEmpty(Cells(iRow, 1)) ' Schleife in Spalte A bis zur ersten leeren Zelle  _
durchführen
If Cells(iRow, 10) = "Fehler" Then
Cells(iRow, 10).Interior.ColorIndex = 3
End If
iRow = iRow + 1
Loop
'Meldun ausgeben
MsgBox "ACHTUNG: Konditionen können nicht exportiert werden - Abbruch" & vbLf & _
intFehler & " Fehler gefunden" & vbLf & vbLf & _
"Bitte wenden Sie sich an den Administrator", vbCritical, "Fehler"
Exit 

Sub ' Anwendung abbrechen, Fehler müssen korrigiert werden
End If
End Sub
Grüsse
JP

Anzeige
AW: AW:Gelöst
25.02.2015 15:48:36
hary
Moin
Wie ich sehe kannst du ja VBA.
Geht auch ohne Schleifen und Filter. Den Code kannst du dir ja anpassen.
Dim letzte As Long
On Error GoTo allesgut
With Worksheets("Test")
'--letzte belegte Zeile nach SpalteA
letzte = .Cells(.Rows.Count, 1).End(xlUp).Row
'--Formel in einem Rutsch
.Range("J2:J" & letzte).FormulaR1C1 = "=IF(COUNTA(RC11:RC16)=1,LOOKUP(2,1/(RC11:RC16""""), _
RC11:RC16),""Fehler"")"
'--- Formel in Wert
.Range("J2:J" & letzte).Value = .Range("J2:J" & letzte).Value
'---autofilter setzen und filtern nach Fehler
.Range("J1").AutoFilter field:=1, Criteria1:="Fehler"
'----faerben
.Range("J2:J" & letzte).SpecialCells(xlVisible).Interior.ColorIndex = 3
'--- Filter abschalten
MsgBox "Es gibt Fehler"
allesgut:
.Range("J1").AutoFilter
End With

gruss hary
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen durchlaufen und Werte prüfen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf den VBA-Projektbaum und wähle "Einfügen" > "Modul".
  3. Schreibe die Schleife:

    • Verwende die folgende Vorlage, um durch die Zeilen zu iterieren und die gewünschten Prüfungen durchzuführen:
    Sub WertePruefen()
       Dim iRow As Integer
       iRow = 1 ' Start bei Zeile 1
       Do While Not IsEmpty(Cells(iRow, 1)) ' So lange bis die erste Zelle in Spalte A leer ist
           If Application.WorksheetFunction.CountA(Range(Cells(iRow, 3), Cells(iRow, 8))) = 1 Then
               Cells(iRow, 13).Value = Cells(iRow, 3).Value ' Wert in Spalte M schreiben
           Else
               Cells(iRow, 13).Value = "Fehler" ' Fehler ausgeben
           End If
           iRow = iRow + 1
       Loop
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle dein Makro aus und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden":

    • Überprüfe, ob alle notwendigen Bibliotheken aktiviert sind. Gehe zu "Extras" > "Verweise" im VBA-Editor.
  • Fehler: "Typenübereinstimmung":

    • Stelle sicher, dass du die richtigen Datentypen verwendest. Zum Beispiel, verwende Long für Zeilenindizes, wenn du mit sehr großen Datenmengen arbeitest.

Alternative Methoden

  • Verwendung von Formeln: Du kannst die gleiche Logik auch mit einer Excel-Formel erreichen. Zum Beispiel:

    =WENN(ANZAHL2(C2:H2)=1;C2;"Fehler")

    Diese Formel prüft, ob genau ein Wert in den Zellen C2 bis H2 vorhanden ist und gibt diesen Wert oder "Fehler" zurück.

  • AutoFilter: Nutze den AutoFilter, um nur die Zeilen anzuzeigen, die Fehler enthalten, und bearbeite diese dann.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um zu zeigen, wie du durch alle Zeilen in einem bestimmten Bereich mit VBA durchlaufen kannst:

Sub Beispiel()
    Dim letzte As Long
    letzte = Cells(Rows.Count, 1).End(xlUp).Row ' Letzte Zeile in Spalte A finden

    For iRow = 1 To letzte
        ' Hier kannst du deine Prüfungen einfügen
        If Cells(iRow, 3).Value = "Test" Then
            Cells(iRow, 13).Value = "Bestanden"
        Else
            Cells(iRow, 13).Value = "Nicht bestanden"
        End If
    Next iRow
End Sub

Tipps für Profis

  • Debugging: Nutze Debug.Print um Werte während der Schleife zu überwachen.

  • Optimierung: Deaktiviere Bildschirmaktualisierungen mit Application.ScreenUpdating = False, um die Leistung des Makros zu verbessern, und aktiviere sie am Ende wieder.

  • Verwende Option Explicit: Das hilft dir, Fehler bei der Variablen-Deklaration zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Schleife anpassen, um nur bestimmte Zeilen zu durchlaufen? Du kannst die Schleife anpassen, indem du die Start- und Endzeile definierst: For i = 5 To 20.

2. Was passiert, wenn ich leere Zellen habe? Wenn du leere Zellen in deinem Bereich hast, verwende IsEmpty, um sie zu überspringen oder zu behandeln.

3. Wie kann ich die Zellenfarbe ändern, wenn ein Fehler auftritt? Du kannst die Hintergrundfarbe mit Cells(iRow, 13).Interior.ColorIndex = 3 ändern, um einen Fehler visuell hervorzuheben.

4. Gibt es eine Möglichkeit, die Schleife zu optimieren? Ja, anstelle von Do While kannst du auch eine For-Schleife verwenden, die oft schneller ist, insbesondere bei großen Datenmengen.

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