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

tabbalden apart verzenden en hoe kan tabbladen verbergen met een VBA

Status
Niet open voor verdere reacties.

Spekker

Gebruiker
Lid geworden
17 dec 2016
Berichten
142
hoi allemaal

Ben weer een stukje verder gegaan met mijn file
ik heb nu 55 tabbladen en daarvan zijn er drie die ik graag zichtbaar wil houden en de andere tabbladen wil ik graag alleen via het tabblad weken laten oproepen
ik krijg dit niet voor elkaar wie kan of wil mij daarmee helpen?

en ik zou graag willen weten of het mogelijk is om alleen het geselecteerde tabblad te verzenden via email ?

ik hoop dat jullie mij antwoord kunnen geven.
 

Bijlagen

  • Kopie van Copy of dAAN b.xlsm
    1,4 MB · Weergaven: 35
Laatst bewerkt:
Je hebt er in eerste instantie wel HEEL veel overbodige code in zitten. Je kan 156 routines vervangen door 3 routines.
Die 52 "vooruit" routines kunnen door 1 routine worden vervangen en de bestaande kunnen dus weg. De vervanger staat verderop in dit bericht.

Die 52 BeforeDoubleClick routines kunnen door 1 routine worden vervangen en kunnen dus weg. De vervanger is dit:
(In de ThisWorkbook sectie)
Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If LCase(Left(Sh.Name, 4)) <> "week" Then Exit Sub
    If Not Intersect(Target, Range("C4:I53")) Is Nothing Then
        On Error Resume Next
        Target.Value = "????"
    End If
    Cancel = True
End Sub

Die 52 Worksheet_Change(ByVal Target As Range) routines kunnen door 1 routine worden vervangen en de bestaande kunnen dus weg. De vervanger is dit:
(In de ThisWorkbook sectie)
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim i As Integer
    If LCase(Left(Sh.Name, 4)) <> "week" Then Exit Sub
    Select Case Target.Row
        Case 4 To 53
            Select Case Target.Column
                Case 3 To 10
                    For i = 4 To 53
                        If Target.Row <> i And Cells(i, Target.Column).Value = Target.Value Then
                            If InStr("????TX", Trim(Target.Value)) = 0 Then
                                MsgBox Target.Value & " is al ingedeeld.", vbCritical, "Reeds ingedeeld"
                                Application.EnableEvents = False
                                Target.Value = ""
                                Application.EnableEvents = True
                                Exit Sub
                            End If
                        End If
                    Next i
            End Select
    End Select
End Sub

Verder kan je alle bladen waarvan de naam met Week begint, bij het openen van het document onzichtbaar maken.
(In de ThisWorkbook sectie)
Code:
Private Sub Workbook_Open()
    Dim Sh As Worksheet
    
    For Each Sh In ThisWorkbook.Sheets
        If LCase(Left(Sh.Name, 4)) = "week" Then Sh.Visible = False
    Next Sh
End Sub
Als je ze ook wilt verbergen voor het rechts klik menu links onderin, gebruik je niet sh.Visible = False maar sh.Visible = xlVeryHidden

Het blad kan dan weer zichtbaar gemaakt worden in die ene routine die door de knopjes wordt gestart:
(In een module en aan alle knopjes hangen)
Code:
Sub GaNaarWeek()
    Dim Blad As String
    Blad = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
    Blad = "Week " & Mid(Blad, 5)
    Sheets(Blad).Visible = True
    Sheets(Blad).Select
End Sub
Met ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text haal je dus de Caption op van de knop (shape) waarop werd geklikt. Dit geldt voor shapes, niet voor echte buttons.

En kan weer onzichtbaar worden gemaakt als je terug gaat naar het blad Weken:
(In de ThisWorkbook sectie)
Code:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If LCase(Left(Sh.Name, 4)) = "week" Then Sh.Visible = False [COLOR="#008000"]'Of xlVeryHidden[/COLOR]
End Sub

Ik vind het zonde om zoveel routines te gebruiken als het niet nodig is, vandaar deze wat uitgebreidere uitleg. Het maakt het onderhoud van zo'n document een stuk eenvoudiger.
Als je dat gereed hebt kunnen we eens naar het mailen kijken want ook dat is geen probleem.

Nog een tip voor leesbaarheid:
Schrijf Range aanduidingen altijd met hoofdletter. Dus niet:
Range("a1:a10") maar Range("A1:A10")
 
Laatst bewerkt:
Dank je wel voor je uitleg.
Ik ben nog een beginnende op dit vlak en moet nog een hoop leren.
Ik ga morgen kijken wast ik heb nu een stroom storing in de wijk.
 
goedemorgen edmoor

ik heb getracht te doen wat jij heb voor gesteld en daar kom komt nu mijn probleem van ervaring of kennis
ik het alle 156 routines weg gehaald en gedaan wat jij voorstelde met de 3 routines neer gezet In de ThisWorkbook sectie
ook het ontzichbaar maken is gelukt

maar nu de volgende stap de knopjes en die ene handeling daar kom ik nu niet uit (In een module en aan alle knopjes hangen) welke ??
kan je mij dat ook uit leggen?

ps: wij hadden hier een stroom storing en ik moest ook naar bed de wekker ging weer om 5 uur dus ik had geen nachtdienst
 

Bijlagen

  • Rooster Daniel - kopie.xlsm
    1,4 MB · Weergaven: 44
Wat ik daarmee bedoel is het volgende:
Dubbelklik op Module1:
MOD.JPG

En plak er dan deze routine in:
Code:
Sub GaNaarWeek()
    Dim Blad As String
    Blad = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
    Blad = "Week " & Mid(Blad, 5)
    Sheets(Blad).Visible = True
    Sheets(Blad).Select
End Sub

Klik dan met rechts op het knopje Week1, kies voor Macro toewijzen en selecteer dan die routine:
Macro.jpg

Doe dat voor al die 53 knopjes. Ze krijgen dus allemaal fysiek dezelfde routine toegewezen.

Sla het document op nadat je eerst het blad Weken hebt geselecteerd, dan ziet het er bij het openen een stuk rustiger uit.
De rest ziet er al goed uit en mooi weinig code zo :thumb:
 
Laatst bewerkt:
oke alles is gedaan en werkt naar goed dus daarvoor bedankt voor de hulp

alleen nu wil ik graag de file beveiligen met een wachtwoord en dat wil ikm als het even kan niet per blad moeten doen
ik heb dat geprobeerd maar dan krijg ik het probleem met de dubbelklik dat het niet meer werkt.
is hier ook een andere methode voor??

en edmoor super bedankt alvast voor je hulp
 

Bijlagen

  • Rooster Daniel - kopie.xlsm
    1,5 MB · Weergaven: 35
Kijk eens of dit naar je zin werkt.
 

Bijlagen

  • Rooster Daniel - kopie-2.xlsm
    1,6 MB · Weergaven: 42
Hoi ExcelAmateur

ik heb dit zelf ook geprobeerd maar nu ook werkt de dubbel klik niet op een lege cel hij blijft draaien :rolleyes:

maar verder moet dit goed zijn het is namelijk nu niet mogelijk om cellen te wissen of te veranderen

en ps ik weet nu ook het wachtwoord niet :)
 
Bij mij werkt het dubbel klikken op een lege cel wel.

Denk dat er nog een foutje in zit, als je op de verborgen tabbladen moet schrijven.
Check je Mail.
 
dankje wel voor je mail
ik ga kijken of ik er achter kan komen waarom het bij mij niet goed gaat
 
hoi ExcelAmateur

Ik weet niet waar de fout zit kan het niet vinden, nu heb ik ook het probleem dat de email ook een foutmelding geeft dat outlook niet werkt en daarna loop bij mij excel vast

dus waar dat nu aanligt dat weet ik niet
 
Wat is precies je bedoeling met die beveiliging? Als je het niet per blad wilt doen dan kan je een wachtwoord op het werkboek zetten.
 
wat ik bedoel met de beveiliging is dat ik nu elk blad apart moet beveiligen tegen schrijven en dat als ik het blad beveilig de dubbelklik niet meer werkt
daarom had ik zo iets is het mogelijk dat ik het blad via een |VBA ga beveiligen zodat ze niet de formules kunnen wissen
 
Maar dat is geen enkel probleem. De Dubbelklik routine kan eerst de beveiliging opheffen, dat z'n werk doen en de beveiliging weer terug zetten.
 
Ok. Wat ik niet wist is dat inderdaad de BeforeDoubleclick niet meer in werking treedt als het blad beveiligd is. Die kan dan ook de beveiliging niet opheffen. Ik heb er zo even geen idee voor en momenteel weinig tijd om het uit te zoeken.
 
Kijk eens of dit beter is/gaat?
Het password van de VBA heb ik verwijderd.
 

Bijlagen

  • Rooster Daniel - kopie-3.xlsm
    1,6 MB · Weergaven: 37
Nee sorry ik zie geen verbetering
wanneer ik het wil beveiligen gaat het niet goed met de dubbelklik
 
Het blijkt dat het BeforeDoubleclick event niet wordt getriggerd op een cel met gegevensvalidatie in een beveiligd blad. Of dat een bug is of by design weet ik niet.
Wijzig daarom dit :
Code:
Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Eens in dit:
Code:
Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Gebruik vervolgens dus niet een dubbelklik maar een rechts klik.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan