VisualBasic VBA Suche durch mehrere Spalten

_CH_K_1991_

Lieutenant
Registriert
Nov. 2008
Beiträge
770
Hallo Zusammen

Ich habe folgenden Code geschrieben um mit einem Spezialfilter gewisse Daten aus einem Datenblatt auszulesen und in ein anderes zu kopieren (natürlich gefiltert). Der Filter ist in einem weiteren Blatt aufgeführt.
Jetzt möchte ich, dass er von den ca 20 Spalten die kopiert werden (sind Kalenderwochen - KW1 u.s.w.) alle ausblendet ausser die drei die im Filter stehen (bei der For Each Schlaufe Range("G1:I1")). Der jetzige Code
würde alle anzeigen ausser die drei. Leider funktioniert im Moment nicht einmal das, denn die das Resultat der For Each Schlauf ist leer, ich nehme an, dass ich die Suche nicht richtig aufgebaut habe.

Besten Dank für Eure Hilfe.
Wenn ich etwas umständlich erklärt habe, bitte fragen ;-)
Gruss

HTML:
Sub Spezialfilter()
    'Kopiert Daten ins neue Blatt - Filter bereits Aktiv
    Worksheets("MDK").Cells.Clear
    With ActiveSheet.Range("A3:BO79")
        .AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Worksheets("Filter").Range("F1:I7"), CopyToRange:=Worksheets("MDK").Range("A1"), _
            Unique:=True
    End With
    Worksheets("MDK").Activate
    
    'Definition der Variabeln für For Each Schlaufe unten
    Dim C As Range
    Dim Suchbegriff
    Dim Spalte As Integer
    Dim SpalteReturn As String
    
    'Spalten ausblenden über For Each Schlaufe
    For Each C In Worksheets("Filter").Range("G1:I1").Cells
        With Suchbegriff = C
            Set C = Columns("M:BZ").Find( _
            What:=Suchbegriff, _
            LookIn:=xlValues, _
            LookAt:=xlPart)
        End With
        'Falls keine Spalte gefunden - Fehlermeldung ausgeben
        If C Is Nothing Then
            MsgBox "Die Kalenderwoche konnte nicht gefunden und ausgeblendet werden."
        Else
            'Spalte auswählen und Verstecken
            C.Select
            Spalte = C.Column
            SpalteReturn = SpaltenBuchstabeErmitteln(Spalte)
            Columns(Spalte).Select
            Selection.Columns.Hidden = True
            Debug.Print (C)
        End If
    Next
End Sub

Funktion:
HTML:
'SpaltenBustabenErmitteln Funktion
Function SpaltenBuchstabeErmitteln(sColumn As Integer)
    Dim iVolleAZ As Integer
    Dim iRest As Integer
    
    iVolleAZ = Int(sColumn / 26)
    iRest = sColumn - iVolleAZ * 26
    
    If iVolleAZ > 0 Then
        SpaltenBuchstabeErmitteln = Chr(64 + iVolleAZ) & Chr(64 + iRest)
    Else
        SpaltenBuchstabeErmitteln = Chr(64 + iRest)
    End If
End Function

PS: Habe den Code als HTML deklariert, sieht so am besten aus...
 
Kannst du vielleicht irgendwie die ganze Datei hochladen? Ist sehr schwer nur doch lesen festzustellen was da fehlt.
 
Das geht leider nicht so gut, da es erstens zwei drei Excel Files betrifft und zweitens ich alle Datensätze verändern müssen, da es sensible Daten sind.

Es geht mir vorallem um den Bereich um die Zeile 18 (beim ersten Bsp) und die darin enthaltene "With Schlaufe" bei Zeile 19.
Denn ich bekomme nach der For Each Schlaufe ein leeres Resultat zurück.

Danke und Gruss
 
Schreibs doch einfach mal ohne With?
Also das sieht für mich nach einem Problem aus was man relativ einfach Debuggen kann ;) Und sollte das nicht funktionieren könntest du mit den Erfahrungen die du dabei machst den Thread anreichern...
 
Zurück
Oben