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

Verwijderen van tabbladen

Status
Niet open voor verdere reacties.

snitsel

Gebruiker
Lid geworden
12 feb 2008
Berichten
199
Hallo iedereen

Na een tijdje zoeken hier op het forum zal ik de vraag maar plaatsen want ik vind het niet.

Korte uitleg:
in mijn excel bestand heb ik 5 tabbladen,
in tabblad 1 heb ik 2 keuzerondjes en mijn waarde staat ingevuld in cel A1. Als ik op de macro knop klik moet het volgende gebeuren:

Als de waarde in cel A1 = 1
dan moet hij tabblad 2, 4 en 5 verwijderen
als de waarde in cel A1 = 2
dan moet hij tabblad 3 verwijderen

Hopelijk kunnen jullie mij helpen. mvg
 
snitsel, Hmmm.... ff voor de duidelijkheid van de helpers...
  • 'Verwijderen' = delete (weggooien)
of
  • 'Verwijderen' = hide (verstoppen)
???

Groet, Leo
 
Laatst bewerkt:
Dank je wel om al snel te reageren...

Ik wil de werkbladen echt verwijderen = delete
 
Dank je wel om al snel te reageren...

Ik wil de werkbladen echt verwijderen = delete
OK! Dan kan je deze code gebruiken.
Code:
Sub VerwijderSheets()

    If MsgBox("Wil je de sheets verwijderen?", vbYesNo, "Let op!") = vbNo Then Exit Sub
    
    If Sheets.Count < 5 Then Exit Sub '1 van de 2 opties is al een keer gebruikt!
    
    Application.DisplayAlerts = False
    
    Select Case Sheets(1).Range("A1").Value
        Case 1
            Sheets(Array(2, 4, 5)).Delete
        Case 2
            Sheets(Array(3)).Delete
        End Select
    
    Application.DisplayAlerts = True
        
End Sub
Maarrrrr.... Let op! WEG is dus ook werkelijk WEG!!!

Groet, Leo
 
OK! Dan kan je deze code gebruiken.
Code:
Sub VerwijderSheets()

    If MsgBox("Wil je de sheets verwijderen?", vbYesNo, "Let op!") = vbNo Then Exit Sub
    
    If Sheets.Count < 5 Then Exit Sub '1 van de 2 opties is al een keer gebruikt!
    
    Application.DisplayAlerts = False
    
    Select Case Sheets(1).Range("A1").Value
        Case 1
            Sheets(Array(2, 4, 5)).Delete
        Case 2
            Sheets(Array(3)).Delete
        End Select
    
    Application.DisplayAlerts = True
        
End Sub
Maarrrrr.... Let op! WEG is dus ook werkelijk WEG!!!

Groet, Leo

Dank je wel Ginger...
Ik test deze code morgen uit op het werk in het gepaste document.

Alleen had ik nu nog graag geweten:
Nu alleen de juiste tabbladen nog overblijven, welke code kan ik nog toevoegen aan mijn macro zodanig dat alle tabbladen nu worden afgedrukt in 1 tijd?
 
Gebruik
Code:
ThisWorkbook.PrintOut
.

Ik dacht er juist aan dat dat bijvoorbeeld tabblad 3: 2 maal moet worden afgedrukt, tabblad 4 vb maar 1 keer...
Is het mogelijk om het als volgt te doen

als tabblad"start" = aanwezig -> print het dan 2 maal af
als tabblad"tab1" = aanwezig --> print het dan 3 maal
 
Dan maak je een lus doorheen de bladen. Zoiets:

Code:
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count

     If ThisWorkbook.Worksheets(i).Name = "start" Then

        'code voor printen

     ElseIf ThisWorkbook.Worksheets(i).Name = "tab1" Then

        'code voor printen

     End if

Next

Wigi
 
Hoi wigi

Ik zal het anders moeten oplossen omdat ik in het begin mijn macro al tabbladen wis via mijn macro.
ik heb het als volgt geprobeerd, maar ik krijg constant foutmeldingen.

'Printen van alle tabbladen die nog aanwezig zijn in het bestand
Sub PrintAllebestanden()
If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then
Dim i As Integer
For i = 1 To ThisWorkbook.Worksheets.Count

If ThisWorkbook.Worksheets(i).Name = "Uithaallijst" Then
Sheets(2).PrintOut Copies:=3

ElseIf ThisWorkbook.Worksheets(i).Name = "Productie fiche" Then
Sheets(3).PrintOut Copies:=1

ElseIf ThisWorkbook.Worksheets(i).Name = "Beslag - In Beton" Then
Sheets(4).PrintOut Copies:=2

ElseIf ThisWorkbook.Worksheets(i).Name = "Plaatsing - In Beton" Then
Sheets(5).PrintOut Copies:=2

ElseIf ThisWorkbook.Worksheets(i).Name = "Montage beslag" Then
Sheets(6).PrintOut Copies:=2
End If
End If
End Sub​
Kan dit in het begin van mijn code?
If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then

Ik heb 2 x 2 keuzerondjes met de waarden in R5 en R6.
ik had gedacht voor iedere oplossing zo'n code te typen...
Maar volgens mij doe ik een grote omweg...
 
Laatst bewerkt:
Kan je eens code tags gebruiken aub?

En aangeven op welke lijn de code vastloopt.

En een bestandje meesturen.

Binnen de IF's kan je best met i als teller verder werken, en niet met 2, 3, ... Anders heeft de i niet veel zin.
 
Kan je eens code tags gebruiken aub?

En aangeven op welke lijn de code vastloopt.

En een bestandje meesturen.

Binnen de IF's kan je best met i als teller verder werken, en niet met 2, 3, ... Anders heeft de i niet veel zin.

Hmm, ik kan het niet taggen... het blijft constant op 1 lijn staan.
Ik snap niet goed wat je wilt zeggen met : "met de teller verder werken"
Kan je het eens aangeven met een vb of kijken in de bijlage wat ik mis doe?
(Ik kan het bestand niet posten, het is te groot (800kb))
Mijn code heb ik even in kladblok gezet en in de bijlage.
 

Bijlagen

Ik denk dat je dit bedoelt:

Code:
'Printen van alle tabbladen die nog aanwezig zijn in het bestand
Sub PrintAllebestanden()
    If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then
         Dim i As Integer
             For i = 1 To ThisWorkbook.Worksheets.Count

                Select Case ThisWorkbook.Worksheets(i).Name
			Case "Uithaallijst": Sheets(i).PrintOut Copies:=3
			Case "Beslag - In Beton", "Plaatsing - In Beton", "Montage beslag": Sheets(i).PrintOut Copies:=2
			Case "Productie fiche": Sheets(i).PrintOut Copies:=1
      		End Select
	Next
      End If
End Sub

Je moet het woord CODE gebruiken ipv het woord INDENT.

Wigi
 
Ik denk dat je dit bedoelt:

Code:
'Printen van alle tabbladen die nog aanwezig zijn in het bestand
Sub PrintAllebestanden()
    If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then
         Dim i As Integer
             For i = 1 To ThisWorkbook.Worksheets.Count

                Select Case ThisWorkbook.Worksheets(i).Name
			Case "Uithaallijst": Sheets(i).PrintOut Copies:=3
			Case "Beslag - In Beton", "Plaatsing - In Beton", "Montage beslag": Sheets(i).PrintOut Copies:=2
			[B]Case "Productie fiche": Sheets(i).PrintOut Copies:=1[/B]
      		End Select
	Next
      End If
End Sub

Je moet het woord CODE gebruiken ipv het woord INDENT.

Wigi

Wigi, Het verloopt allemaal zoals het moet en ik heb tot hier toe al veel bij geleerd.
Alleen zou ik nu nog willen weten hoe ik deze bovenstaande, vet gedrukte code moet printen met een range.
Hiervan wil ik dus 3 kopies;
- 2 x met range A2:F43
- 1 x met range A1:F43
 
Code:
'Printen van alle tabbladen die nog aanwezig zijn in het bestand
Sub PrintAllebestanden()

    Dim i As Integer

    If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then
        
        
        For i = 1 To ThisWorkbook.Worksheets.Count

            Select Case ThisWorkbook.Worksheets(i).Name
                Case "Uithaallijst"
                    
                    Sheets(i).PageSetup.PrintArea = "$A$2:$F$43"
                    Sheets(i).PrintOut Copies:=2
                    Sheets(i).PageSetup.PrintArea = "$A$1:$F$43"
                    Sheets(i).PrintOut Copies:=1
                    
                Case "Beslag - In Beton", "Plaatsing - In Beton", "Montage beslag": Sheets(i).PrintOut Copies:=2
                Case "Productie fiche": Sheets(i).PrintOut Copies:=1
            End Select
        Next
    End If
End Sub

Wigi
 
Het With statement maakt het allemaal wat korter.

Code:
'Printen van alle tabbladen die nog aanwezig zijn in het bestand
Sub PrintAllebestanden()

    Dim i As Integer

    If Sheets(1).Range("R6").Value And Sheets(1).Range("R5").Value = 1 Then
        
        For i = 1 To ThisWorkbook.Worksheets.Count
        
[B]            With Worksheets(i)[/B]
                Select Case .Name
                    Case "Uithaallijst"
                        
                        .PageSetup.PrintArea = "$A$2:$F$43"
                        .PrintOut Copies:=2
                        .PageSetup.PrintArea = "$A$1:$F$43"
                        .PrintOut Copies:=1
                        
                    Case "Beslag - In Beton", "Plaatsing - In Beton", "Montage beslag": .PrintOut Copies:=2
                    Case "Productie fiche": .PrintOut Copies:=1
                End Select
[B]            End With[/B]
        Next
    End If
End Sub

Wigi
 
Het With statement maakt het allemaal wat korter.


Wigi


Wigi, alles gaat goed alleen het printen doet raar en het is iets raar. Ik gebruik de volgende code in mijn sub

Code:
 'Printen van de tabbladen als ->ankers in beton <- en ->automatisatie<-
    If Sheets(1).Range("R6").Value = 1 And Sheets(1).Range("R5").Value = 2 Then
        
        For i = 1 To ThisWorkbook.Worksheets.Count
        
            With Worksheets(i)
                Select Case .Name
                    Case "Uithaallijst"
                        
                        .PageSetup.PrintArea = "$A$2:$F$43"
                        .PrintOut Copies:=2
                        .PageSetup.PrintArea = "$A$1:$F$43"
                        .PrintOut Copies:=1
                                            
                    Case "Beslag - In Beton": .PrintOut Copies:=2
                    
                    Case "Plaatsing - In Beton": .PrintOut Copies:=2
                    
                    Case "Montage beslag": .PrintOut Copies:=2
                    
                    Case "Rail": .PrintOut Copies:=2
                    
                    Case "Productie fiche": .PrintOut Copies:=1
                End Select
            End With
        Next
    End If

Ik heb al het 1 en het ander geprobeerd in de code maar het blijft het zelfde probleem:
Het enige wat uit de printer komt is:

3 x uithaallijst
2 x montage beslag
1 x productie fiche

wat komt er niet uit de printer:
- 2 x beslag in beton
- 2 x plaatsing in beton
- 2 x rail
 
Laatst bewerkt:
En komen de namen van de tabbladen exact overeen met wat er in de verschillende cases staat?
 
En komen de namen van de tabbladen exact overeen met wat er in de verschillende cases staat?

Ja Wigi, dat heb ik gedaan, want ik had voor alle zekerheid de namen gekopieerd uit de tabbladen en geplakt. Misschien zit ergens anders mijn fout? een conflict mss...
In bijlage de code die ik gebruik bij deze macro knop. Wil je deze even bekijken aub?
 

Bijlagen

Je zorgt er best eerst voor dat je begrijpt wat er gebeurt in de macro, want volgens mij snap je het niet.

Want het is niet de bedoeling dat het stuk code om te printen 4 keer gezet wordt :confused:

Het is een lus en die zet je maar 1 keer.

Ga met F8 stap voor stap door de code en stel vast wat er gebeurt, wat i is op dat moment enz.

Wat evt. wel nodig is, is meer of minder cases hebben in de Select Case structuur.

Wigi
 
Je zorgt er best eerst voor dat je begrijpt wat er gebeurt in de macro, want volgens mij snap je het niet.

Want het is niet de bedoeling dat het stuk code om te printen 4 keer gezet wordt :confused:

Het is een lus en die zet je maar 1 keer.

Ga met F8 stap voor stap door de code en stel vast wat er gebeurt, wat i is op dat moment enz.

Wat evt. wel nodig is, is meer of minder cases hebben in de Select Case structuur.

Wigi

Ik snap ze idd niet... nu heb ik geprobeerd met de F8 en hij doet idd rare dingen.
Maar ik snap niet hoe ik deze lus dan moet gebruiken bij mijn 4 opties, want uiteindelijk moet ik 4 maal IF gebruiken.

Wat betekend "integer" eigenlijk?
en als i = 1 ,wilt dit zeggen dat hij iedere lijn 1 maal moet uitvoeren?
Maar als ik hem test in mijn eerste reeks "cases" dan loopt hij iedere lijn af en opeens begin hij opnieuw en halverwege is het gedaan en start het printen :-s.

Kan je mij een voorbeeld geven hoe het dan wel moet, of mij wat meer uitleg geven?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan