Clever-Excel-Forum

Normale Version: If Bedingung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Wo liegt der Fehler, wenn meine IF Bedingung (Filtern) nicht berücksichtigt wird?

Hat hier jemand eine Lösung parat.

Hier mein Problem:

Danke an eurem Interesse.

milli

' Option Explicit
Sub WordTabelleSchreiben()
    Dim appWord As Object
    Dim i As Integer, k As Integer
    Dim tb As Object
    
    ThisWorkbook.Worksheets("Tabelle1").Activate
    excelZeile = 1
    anzahlGefiltert = 0
    anzahlGesamt = 0
    Do
    If Cells(excelZeile, 4).Value = "" Then
    Exit Do
    End If
    If Cells(excelZeile, 4).Value >= 2 And Cells(excelZeile, 4).Value <= 4 Then
     '   Filter Anzahl gefiltert = AnzahlGefiltert + 1
     End If
     excelZeile = excelZeile + 1
     anzahlGesamt = anzahlGesamt + 1
     Loop
    ' Anwendung "Word" starten
    Set appWord = CreateObject("Word.Application")
    
    ' Neues Word-Dokument erstellen
    appWord.Documents.Add
    
    ' Neue Tabelle erstellen und innen wie außen mit Rahmen versehen
    Set tb = appWord.ActiveDocument.Tables.Add _
       (appWord.ActiveDocument.Range(0), 21, 5) ' Erklärung: 21 = 21 Zeilen. 5 = 5 Spalten
    tb.Borders.InsideLineStyle = 1 'wdLineStyleSingle
    tb.Borders.OutsideLineStyle = 1 'wdLineStyleSingle
    
    For i = 1 To 21      ' Erklärung = 21 Zeilen aus Tabelle
        For k = 1 To 5   ' 5 = 5 Spalten aus Tabelle
            ' Tabellenzelle mit Text aus Excel-Zelle füllen
            tb.Cell(i, k).Range.Text = Cells(i, k).Value
        Next k
    Next i
    
    ' Word-Dokument speichern mit Dateiname
    appWord.ActiveDocument.SaveAs "C:\Users\wolli25\Desktop\tabelle55.docx"
    
    ' Anwendung "Word" beenden
    appWord.Quit
    
    End Sub
Hallöchen,

ich nehme mal an, dass Du diese zeile meinst:
    '   Filter Anzahl gefiltert = AnzahlGefiltert + 1
Was willst Du hier erreichen?
Willst Du nur AnzahlGefiltert hochzählen? Dann eventuell so.
    'Filter
    AnzahlGefiltert = AnzahlGefiltert + 1
Ist Filter ein weiteres Makro? Dann ist das ein etwas seltsamer Aufruf.
Willst Du den Zähler hochsetzen und dann das Makro Filter aufrufen?
Dann musst Du das in zwei Zeilen schreiben.
   AnzahlGefiltert = AnzahlGefiltert + 1
   Filter AnzahlGefiltert
Hi,

wenn es Dir um die Ermittlung der Anzahl der gefilterten Zeilen geht, dann ginge das auch etwas kürzer:


Code:
Sub GefilterteZeilenZählen()
Dim Bereich As Range
Dim i As Integer

Set Bereich = Tabelle1.Range("A1").CurrentRegion
i = Intersect(Bereich.SpecialCells(xlVisible), Bereich.Columns(1)).Count - 1

End Sub


Im obigen Beispiel wird die Anzahl der sichtbaren Zeilen in Spalte A ermittelt und um 1 reduziert (Tabelle hat überschriften).

Gruß
Ich