VBA loop

Status
Niet open voor verdere reacties.

meloenman

Gebruiker
Lid geworden
22 mrt 2021
Berichten
9
Is er een loop waarbij ik een functie op meerdere tabbladen kan uitvoeren?

Code:
Private Sub CommandButton1_Click()
    Dim customerBook As Workbook
    Dim filter As String
    Dim caption As String
    Dim customerFilename As Variant
    Dim customerWorkbook As Workbook
    Dim targetWorkbook As Workbook
    Dim targetSheet As Worksheet
    Dim sourceSheet As Worksheet

    Set targetWorkbook = Application.ActiveWorkbook

    Application.ScreenUpdating = False
    caption = "Kies het bestand! "
    customerFilename = Application.GetOpenFilename(filter, , caption)
    If TypeName(customerFilename) <> "Boolean" Then
        Set customerWorkbook = Application.Workbooks.Open(CStr(customerFilename))

        Set targetSheet = targetWorkbook.Worksheets.Add
        Set sourceSheet = customerWorkbook.Worksheets(2)

        sourceSheet.Range("A1", "M1000").Copy targetSheet.Range("A1", "M1000")
        Application.ScreenUpdating = True
        customerWorkbook.Close
    End If
End Sub

Met bovenstaande wordt er dus elke keer dat ik data importeer een nieuw tabblad aangemaakt. Dit werkt hoe ik het wil hebben.

Code:
Sub Tabel()
'
' Tabel Macro
'

'
    sheets("Blad1").Select
    Range("Tabel_Query_van_Excel_Files[#All]").Select
    ActiveSheet.ListObjects("Tabel_Query_van_Excel_Files").Range.AutoFilter Field _
        :=2, Criteria1:="3000"
    ActiveSheet.ListObjects("Tabel_Query_van_Excel_Files").TableStyle = _
        "TableStyleLight1"
    Range("Tabel_Query_van_Excel_Files[#All]").Select
    ActiveSheet.ListObjects("Tabel_Query_van_Excel_Files").Resize Range( _
        "$A$1:$O$435")
    Range("Tabel_Query_van_Excel_Files[[#Headers],[Kolom1]]").Select
    ActiveCell.FormulaR1C1 = "Verklaringen"
    Range("Tabel_Query_van_Excel_Files[[#Headers],[Kolom2]]").Select
    ActiveCell.FormulaR1C1 = "Acties"
    Range("O59").Select
    
    
End Sub

Met bovenstaande code maak ik een tabel van de geïmporteerde data, vergroot ik de tabel en filter ik de tabel.
Hij maakt dat nu alleen bij blad1, maar ik wil dat dit als een loop krijgen dat als ik op de functieknop druk hij ook bij de volgende tabbladen een tabel maakt. Ook als blad1, blad2, blad3 al een tabel hebben en open staan, dat hij bij blad4 er ook een tabel van maakt bijvoorbeeld

Mvg
 
Laatst bewerkt:
Gebruik geeen 'select' of 'Activate' in VBA.
Vermijd overbodige objectvariabelen.
 
Het is me niet heel duidelijk wat je wil, maar dit is alvast een starter
Code:
Sub Tabel()
   For Each sh In ThisWorkbook.Worksheets                            'alle werkbladen aflopen
      With sh                                                        'in je blad
         On Error Resume Next                                        'doorgaan bij fout
         naam = ""                                                   'reset naam
         naam = .Range("A1").ListObject.Name                         'wat is de naam van de tabel in A1
         On Error GoTo 0
         
         If Len(naam) = 0 Then                                       'heeft geen naam, dus is nog geen tabel
            Set LO = .ListObjects.Add(xlSrcRange, .Range("A1").CurrentRegion, , xlYes)   'maak van de gegevens rond A1 een tabel, mag natuurlijk op dat ogenblik geen overlap met een andere tabel zijn !!!
            With LO                                                  'met die tabel
               .Range.AutoFilter 2, "3000"                           'filteren
               .TableStyle = "TableStyleLight1"                      'opmaak van je tabel
               .HeaderRowRange.Cells(1, 1).Resize(, 2).Value = Array("Verklaringen", "Acties")   'aanpassingen in de koprij
            End With
         End If
      
      End With
   Next
End Sub
 
Het is me niet heel duidelijk wat je wil, maar dit is alvast een starter

Hi Cow18,

Bedankt voor het schrijven van uw code.

Wat ik wil is dat ik in elke tabblad een tabel gemaakt word. In mijn voorbeeld file heb ik 4 tabbladen. Als ik in tabblad1 een tabel heb gemaakt dat hij daarna in tabblad2 een tabel maakt enzovoort.

Uw code creëert nog geen tabel in mijn tabbladen. Ik krijg een foutmelding bij range.


Bekijk bijlage Voorbeeld1.xlsm
 
Natuurlijk creëert die geen tabellen, het zijn al tabellen, behalve in "Importeren".
Van een tabel kan je geen 2e keer een tabel maken, dus die macro checkt dat eerst en doet lekker niets.
In "Importeren" staat niets, dus maakt hij een tabelletje van 1 kolom en dan doe je een autofilter op de 2e kolom, pats, fout.

Eigenlijk wil je gewoon direct bij het kopieren je tabel aanmaken, zie Commandbutton1
Al die tabbladen, dat maakt de boel wel lekker rommelig, waarom niet onderin toevoegen aan een bestaande tabel, eventueel met verwijderen van duplicaten ?
Je houdt maar 31 unieke rijen over als je zoiets doet.
 

Bijlagen

  • Voorbeeld1 (2).xlsm
    110 KB · Weergaven: 17
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan