Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zähler in For each Schleife

Zähler in For each Schleife
WolfgangN
Hallo,
mit dem nachfolgenden Makro wird in Zellen mit Kommentaren ein in einer Textbox eingegebener Begriff gesucht. Die gefundenen Zellen erhalten einen Rahmen. Dies klappt auch.
Ich möchte jetzt aber noch eine Meldung erhalten, wenn keine Kommentarzelle diesen Begriff hat, ideal wäre es noch wenn eine Meldung kommt, wieviel Zellen mit dem Begriff gefunden wurden.
Leider führten meine Versuche, siehe kommentierte Zeilen im Makro, nicht zum Erfolg.
Vielen Dank und Gruß
Wolfgang
Private Sub CommandButton4_Click()
Dim varAbfrage As Variant
Dim comZelle As Comment
varAbfrage = TextBox2.Value
If varAbfrage  "" Then
For Each comZelle In ActiveSheet.Comments
If InStr(comZelle.Shape.DrawingObject.Text, varAbfrage) > 0 Then
ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
(xlEdgeLeft).LineStyle = xlContinuous
End If
Next comZelle
'      If Application.WorksheetFunction.CountA _
'       (ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
'        (xlEdgeLeft).LineStyle = xlContinuous) = 0 Then
'      MsgBox "Kein Begriff"
'      End If
End If
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zähler in For each Schleife
02.12.2009 10:48:07
Rudi
Hallo,
du kannst keine Rahmenlinien zählen.
Lass einfach einen Zähler mitlaufen.
Private Sub CommandButton4_Click()
Dim varAbfrage As Variant
Dim comZelle As Comment
Dim lngCounter As Long
varAbfrage = TextBox2.Value
If varAbfrage  "" Then
For Each comZelle In ActiveSheet.Comments
If InStr(comZelle.Shape.DrawingObject.Text, varAbfrage) > 0 Then
lngCounter = lngCounter + 1
ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
(xlEdgeLeft).LineStyle = xlContinuous
End If
Next comZelle
If lngCounter = 0 Then
MsgBox "Kein Begriff"
End If
End If
End Sub

Gruß
Rudi
Anzeige
AW: Zähler in For each Schleife
02.12.2009 10:55:30
WolfgangN
Hallo Rudi,
vielen Dank für Deine Hilfe, alles perfekt.
Gruß
Wolfgang
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zähler in For Each Schleife einbauen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Zähler in einer For Each Schleife in Excel VBA einzubauen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden Code:

    Private Sub CommandButton4_Click()
        Dim varAbfrage As Variant
        Dim comZelle As Comment
        Dim lngCounter As Long
        varAbfrage = TextBox2.Value
    
        If varAbfrage <> "" Then
            For Each comZelle In ActiveSheet.Comments
                If InStr(comZelle.Shape.DrawingObject.Text, varAbfrage) > 0 Then
                    lngCounter = lngCounter + 1
                    ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
                    (xlEdgeLeft).LineStyle = xlContinuous
                End If
            Next comZelle
    
            If lngCounter = 0 Then
                MsgBox "Kein Begriff"
            Else
                MsgBox lngCounter & " Zellen gefunden."
            End If
        End If
    End Sub
  4. Passe die TextBox an: Stelle sicher, dass du eine TextBox mit dem Namen TextBox2 hast, um den Suchbegriff einzugeben.

  5. Führe das Makro aus: Klicke auf den Button, um die Suche zu starten und die Zählung der gefundenen Zellen zu sehen.


Häufige Fehler und Lösungen

  • Fehler: "Kein Begriff" wird angezeigt, obwohl es Zellen gibt.

    • Lösung: Überprüfe, ob der Suchbegriff korrekt in die TextBox eingegeben wurde und keine zusätzlichen Leerzeichen enthält.
  • Fehler: Makro läuft nicht.

    • Lösung: Stelle sicher, dass der Button mit dem Makro verknüpft ist und dass die Kommentare in der aktiven Tabelle vorhanden sind.

Alternative Methoden

Falls du eine andere Methode zur Zählung der Zellen verwenden möchtest, kannst du auch die CountIf-Funktion nutzen. Hier ist ein Beispiel:

Dim count As Long
count = Application.WorksheetFunction.CountIf(ActiveSheet.Comments, "*" & varAbfrage & "*")
If count > 0 Then
    MsgBox count & " Zellen gefunden."
Else
    MsgBox "Kein Begriff"
End If

Diese Alternative ist besonders nützlich, wenn du die Zählung ohne Schleife durchführen möchtest.


Praktische Beispiele

  1. Beispiel mit TextBox: Verwende eine TextBox, um einen Begriff einzugeben, und zähle die Zellen mit diesem Begriff.
  2. Beispiel mit Kombinationen: Nutze die For Each Schleife zusammen mit anderen Excel-Funktionen, um komplexere Analysen durchzuführen.

Tipps für Profis

  • Batch-Verarbeitung: Wenn du viele Zellen in einem Batch verarbeiten möchtest, verwende Application.ScreenUpdating = False, um die Geschwindigkeit zu erhöhen.
  • Debugging: Setze Breakpoints im Code, um den Zähler während der Schleife zu überwachen und Fehler leichter zu identifizieren.
  • Zähler in Excel: Manchmal ist es hilfreich, die Zähldaten in einer separaten Zelle anzuzeigen, um den Überblick zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich den Zähler anpassen? Du kannst die Variable lngCounter in einen anderen Datentyp ändern, wenn du mit größeren Zahlen arbeiten möchtest.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und neuer) funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige