• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

De "Behalve" Code VBA excel

Status
Niet open voor verdere reacties.

Jay305

Gebruiker
Lid geworden
6 nov 2018
Berichten
76
Goedendag Allemaal,
Ik heb een code die ervoor zorgt dat alle actieve werkbladen worden gecheckt en dat alles van die datum in 1 werkblad terecht komen.
Nu heb ik 1 blad die ik niet wil laten samenvoegen maar hoe verwerk ik dit in mijn code?
De code die ik hiervoor nu gebruik is:
Code:
Sub VoegSamen()
    Dim oWs As Worksheet
    Dim lMaxRegel As Long
    Dim cl As Range
    Dim sq As Variant
    
   Blad1.[F7:F1000].WrapText = False
    Blad1.[A7:M1000].ClearContents
    
    For Each oWs In ActiveWorkbook.Worksheets                                                           'Doorloop alle werkbladen
        If oWs.Name <> "Hoofdmenu" Or oWs.Name <> "Werkzaamheden" Or oWs.Name <> "Verzamelblad" Then    'Behalve "Totaal"
            lMaxRegel = oWs.Range("A100000").End(xlUp).Row                                              'Bepaal nummer laatste regel
            With oWs
                For Each cl In .Range("A6").Resize(lMaxRegel)                                           'Doorloop alle regels
                    If cl = Blad1.Range("D2").Value Then
                        sq = .Cells(cl.Row, "A").Resize(, 10).Value
                        Blad1.Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(1, 10).Value = sq
                        Blad1.Cells(Rows.Count, "A").End(xlUp).Offset(, 4).Value = oWs.Name
                        
                        sq = ""
                    End If
                Next cl                                                                                 'Ga naar volgende regel
            End With
        End If
    Next oWs                                                                                            'Ga naar volgende werkblad
    
    Blad1.[F7:F1000].WrapText = True
End Sub
 
opletten, als je niets specifieert, dan maakt excel onderscheid tussen hoofdletters en kleine letters, dus ...
Code:
Sub VoegSamen()
     Dim oWs   As Worksheet
     Dim lMaxRegel As Long
     Dim cl    As Range
     Dim sq    As Variant

     Blad1.[F7:F1000].WrapText = False
     Blad1.[A7:M1000].ClearContents

     For Each oWs In ActiveWorkbook.Worksheets                                                           'Doorloop alle werkbladen
          Select Case LCase(oWs.Name)     'de naam van het werkblad in kleine letters
               Case "hoofdmenu", "werkzaamheden", "verzamelblad", "mijn ander blad"     'opsomming van alle niet te behandelen werkbladen, in kleine letters !!!!
               Case Else     'alle andere bladen
                    lMaxRegel = oWs.Range("A100000").End(xlUp).Row                                              'Bepaal nummer laatste regel
                    With oWs
                         For Each cl In .Range("A6").Resize(lMaxRegel)                                           'Doorloop alle regels
                              If cl = Blad1.Range("D2").Value Then
                                   sq = .Cells(cl.Row, "A").Resize(, 10).Value
                                   Blad1.Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(1, 10).Value = sq
                                   Blad1.Cells(Rows.Count, "A").End(xlUp).Offset(, 4).Value = oWs.Name

                                   sq = ""
                              End If
                         Next cl                                                                                 'Ga naar volgende regel
                    End With
          End Select
     Next oWs                                                                                            'Ga naar volgende werkblad

     Blad1.[F7:F1000].WrapText = True
End Sub
 
Stel dat je For-loop het werkblad "Verzamelblad" tegenkomt.
Dan is oWs.Name <> "Hoofdmenu" True en oWs.Name <> "Werkzaamheden" ook True en oWs.Name <> "Verzamelblad" False.
Dus krijg je dus:
If True Or True Or False, dat levert True op en dus wordt Verzamelblad verwerkt.
Hoe je werkblad ook heet, het wordt altijd verwerkt, dat lijkt mij niet de bedoeling.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan