• 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.

sheets uitsluiten?!

Status
Niet open voor verdere reacties.

Ericssport

Gebruiker
Lid geworden
7 jan 2009
Berichten
90
Beste probleemoplossers, ik heb met hulp van dit forum een stukje code samengesteld/geschreven, en het werkt zoals het moet. Alleen nu zou ik graag iets aan de code willen toevoegen, maar helaas schiet mijn kennis voor tekort.
De code haalt uit gegevens uit bepaalde cellen van elke sheet, maar hij moet daarbij enkele sheets uitsluiten, hoe doe ik dat?! Hieronder heb ik de code en het bestand toegevoegd.


Code:
Private Sub Workbook_Open()

'


With Application
    .ScreenUpdating = False
    .EnableEvents = False
    
    psw = "eric"
     
                    
                        On Error Resume Next
                    Sheets("Totaal").Unprotect
                    Sheets("Totaal").Select
                   
End With
'Columns(1).Insert
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> "Totaal" Then
            Cells(i, 1) = Sheets(i).Name
        End If
        Cells(i, 2).Formula = "=INDIRECT(""'""&RC[-1]&""'""&""!$A$1"")" 'Genereert Cel A1 in Kolom B
        Cells(i, 3).Formula = "=INDIRECT(""'""&RC[-2]&""'""&""!$B$1"")" 'Genereert Cel B1 in Kolom C
        Cells(i, 4).Formula = "=INDIRECT(""'""&RC[-3]&""'""&""!$B$4"")" 'Genereert Cel B4 in Kolom D
    Next i
Columns(1).EntireColumn.Hidden = False
Rows(1).Delete
Rows(1).Insert
With Application
    .ScreenUpdating = True
        .EnableEvents = True
End With
'ActiveSheet.Protect Password:=psw, DrawingObjects:=True, Contents:=True, Scenarios:=True
        
                
                
                End Sub
 

Bijlagen

Laatst bewerkt:
welke werkbladen moeten worden uitgesloten?
Zit er een bepaalde logica in?

Met vriendelijke groet,


Roncancio
 
Bij het voorbeeld hierboven in de eerste post gaat het om sheet "Uisluiten 1"en sheet "Uitsluiten 2", in de toekomst zal het misschien om nog één of twee sheets gaan die uitgesloten moeten worden. De namen en de positie ten opzichte van andere sheets kan varieeren. :)
 
Laatst bewerkt:
Bij het voorbeeld hierboven in de eerste post gaat het om sheet "Uisluiten 1"en sheet "Uitsluiten 2", in de toekomst zal het misschien om nog één of twee sheets gaan die uitgesloten moeten worden. De namen en de positie ten opzichte van andere sheets kan varieeren. :)

Hoe zijn de uitgesloten werkbladen te herkennen?
Naam? Inhoud?

Met vriendelijke groet,


Roncancio
 
Ik zou graag willen uitsluiten aan de hand van de naam van de sheet. Dus in leken taal;

Uit alle sheets met uitzondering van sheet "Uitgesloten 1 en 2" cel a1 b2 en c3 genereren en in sheet "Ttotaal" plaatsen.

Hij doet bijna dit alles behalve het uitsluiten van bepaalde sheets.
 
In dat geval verander:

Code:
      If Sheets(i).Name <> "Totaal" Then

...in...

Code:
      If Sheets(i).Name <> "Totaal"  And Left(Sheets(i).Name,11) = "Uitgesloten" Then

Met vriendelijke groet,


Roncancio
 
Dan veranderd dus de code in dit:

Code:
Private Sub Workbook_Open()

'


With Application
    .ScreenUpdating = False
    .EnableEvents = False
    
    psw = "eric"
     
                    
                        On Error Resume Next
                    Sheets("Totaal").Unprotect
                    Sheets("Totaal").Select
                   
End With
'Columns(1).Insert
    For i = 1 To Sheets.Count
        'If Sheets(i).Name <> "Totaal" Then
         If Sheets(i).Name <> "Totaal" And Left(Sheets(i).Name, 11) = "Uitgesloten" Then
            
            Cells(i, 1) = Sheets(i).Name
        End If
        Cells(i, 2).Formula = "=INDIRECT(""'""&RC[-1]&""'""&""!$A$1"")" 'Genereert Cel A1 in Kolom B
        Cells(i, 3).Formula = "=INDIRECT(""'""&RC[-2]&""'""&""!$B$1"")" 'Genereert Cel B1 in Kolom C
        Cells(i, 4).Formula = "=INDIRECT(""'""&RC[-3]&""'""&""!$B$4"")" 'Genereert Cel B4 in Kolom D
    Next i
Columns(1).EntireColumn.Hidden = False
Rows(1).Delete
Rows(1).Insert
With Application
    .ScreenUpdating = True
        .EnableEvents = True
End With
'ActiveSheet.Protect Password:=psw, DrawingObjects:=True, Contents:=True, Scenarios:=True

Helaas fungeert hij dan niet meer naar behoren?!
 
Laatst bewerkt:
Code:
Private Sub Workbook_Open()

' Macro1 Macro
' Macro recorded 5-2-2009 by E.J.Dijxhoorn
'


With Application
    .ScreenUpdating = False
    .EnableEvents = False
    
    psw = "eric"
     
                    
                        On Error Resume Next
                    Sheets("Totaal").Unprotect
                    Sheets("Totaal").Select
                   
End With
'Columns(1).Insert
    For i = 1 To Sheets.Count
[B][COLOR="Red"]        'If Sheets(i).Name <> "Totaal" Then[/COLOR][/B]
         If Sheets(i).Name <> "Totaal" And Left(Sheets(i).Name, 11) = "Uitgesloten" Then
            
            Cells(i, 1) = Sheets(i).Name
        End If
        Cells(i, 2).Formula = "=INDIRECT(""'""&RC[-1]&""'""&""!$A$1"")" 'Genereert Cel A1 in Kolom B
        Cells(i, 3).Formula = "=INDIRECT(""'""&RC[-2]&""'""&""!$B$1"")" 'Genereert Cel B1 in Kolom C
        Cells(i, 4).Formula = "=INDIRECT(""'""&RC[-3]&""'""&""!$B$4"")" 'Genereert Cel B4 in Kolom D
    Next i
Columns(1).EntireColumn.Hidden = False
Rows(1).Delete
Rows(1).Insert
With Application
    .ScreenUpdating = True
        .EnableEvents = True
End With
'ActiveSheet.Protect Password:=psw, DrawingObjects:=True, Contents:=True, Scenarios:=True

Het vetgedrukte rode gedeelte verwijderen.

Met vriendelijke groet,


Roncancio
 
Werkt ook niet. Ik had die regel in eerste instantie ook vervangen, dat werkte niet dus heb ik hem met een komma'tje ervoor evn terug geplaatst voor de duidelijkheid. Ik krijg het onderstaande in de totaal sheet te zien?!


#VERW! #VERW! #VERW!
#VERW! #VERW! #VERW!
#VERW! #VERW! #VERW!
#VERW! #VERW! #VERW!
#VERW! #VERW! #VERW!
 
Ik zie trouwens dat ik een fout heb gemaakt in de code
Code:
        If Sheets(i).Name <> "Totaal" And Left(Sheets(i).Name, 11) [COLOR="Red"][B]<>[/B][/COLOR] "Uitgesloten" Then

Kan je eventueel het bestand opsturen (zonder gevoelige info), zodat ik kan zien wat er aan de hand is.

Met vriendelijke groet,


Roncancio
 
Zo werkt het volgens mij wel naar behoren.
De fout zat 'm niet in de code maar in het verkeerd gebruiken van de lus.
Ik heb de code een klein beetje aangepast, maar er zitten m.i. nog een aantal curiositeiten in.
1 Tip wil ik wel meegeven:
Het is een goed gebruik om de lussen duidelijk aan te geven.
Voor het programma maakt het niet uit maar het leest wel een stuk makkelijker.
Er zijn zelfs programmeertalen die dit automatisch doen.

Voorbeeld van jouw bestand.

Code:
For
        [code]
            Next

In plaats van

Code:
For
     [code]
Next

Met vriendelijke groet,


Roncancio
 

Bijlagen

bedankt voor de tip! Mijn eerste cursus zit er aan te komen ;)

Nog twee klein vraagjes, als ik nu meerdere sheets wil uitsluiten, hoe doe ik dat?! En als de uit te sluiten sheets van naam veranderen, wat moet ik dan in de code veranderen?
 
bedankt voor de tip! Mijn eerste cursus zit er aan te komen ;)

Nog twee klein vraagjes, als ik nu meerdere sheets wil uitsluiten, hoe doe ik dat?! En als de uit te sluiten sheets van naam veranderen, wat moet ik dan in de code veranderen?

In de huidige situatie worden de werkbladen Totaal en die met "Uitsluiten" beginnen uitgesloten.
Wil je meerdere en/of andere werkbladen uitsluiten dan is het een beetje afhankelijk van wat deze onderscheidt van de "goede" werkbladen.

Je zou kunnen denken aan:
- De positie van de werkbladen tov elkaar. Bijvoorbeeld de 1e 4 werkbladen overslaan.
Code:
        If Sheets(i).Name <> "Totaal" And Sheets(i).Index>4 Then

- Een bepaalde waarde in een bepaalde cel.
Code:
        If Sheets(i).Name <> "Totaal" And Sheets(i).Range("A1").Value = "Test" Then

- Gedeelte van de naam van een werkblad. Wat we dus nu gedaan hebben.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan