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

Toggle button (2)

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.430
Nog even een aanvullende vraag:
In cel C1 moet de eerste dag van de week komen te staan (ma = 1 en Zo = 7) die geselecteerd is dmv de toggle buttons links.
Opzich werkt het wel maar er zitten toch 2 nadelen aan deze methode.

1. Bij het bv verwijderen van de maandag verschijnt er pas 'Di' in cel C1 op het moment dat ik een andere cel aanklik
Of als ik woensdag aanklik veranderd C1 in woensdag en pas weer in maandag als ik op een andere cel klik

2. Bij elke invoer krijg je een screen verversing wat irritatie opwekt. Ondanks de "Application.ScreenUpdating = False" en "True"

Kan dit aangepast worden of moet ik het hiermee doen?
 

Bijlagen

  • toggle button (2).zip
    37,8 KB · Weergaven: 28
Willem,

Probeer dit stukje eens in elke buttoncode toe te voegen.
Code:
Private Sub Tgb_Column_Maandag_Click()
Dim rB As Range
    Application.ScreenUpdating = False
    
'   Per cel wordt gekeken of de dag op een maandag valt.
    For Each rB In Range("E1:GD1")
        If Weekday(rB.Value) = 2 Then rB.EntireColumn.Hidden = Tgb_Column_Maandag.Value
    Next
    Tgb_Column_Maandag.Caption = WorksheetFunction.Choose(Abs(Tgb_Column_Maandag.Value) + 1, "MAANDAG VERBERGEN", "MAANDAG TONEN")
[COLOR="red"]Dim i As Long
For i = 5 To 11
If Columns(i).Hidden = True Then

Range("C1") = Format(Cells(1, i + 1).Value, "ddd")
End If
Next[/COLOR]   
'   Als de knop wordt ingedrukt dan verandert de knop van rood naar groen en omgekeerd.
    With Tgb_Column_Maandag
        If .Value = True Then .BackColor = vbRed Else .BackColor = vbGreen
        If .Value = False Then Range("c1") = "Ma"

    End With
    Application.ScreenUpdating = True
End Sub
 
Het is nog niet helemaal wat ik graag zou willen.
Vraag 2 is beantwoord

Vraag 1 echter nog niet
Als ik eerst maandag dinsdag en woensdag selecteer verschijnt er keurig 'Ma' in cel C1
Deselecteer ik dan maandag dan blijft er 'Ma' staan in C1 er zou dan 'di' moeten komen te staan.

De dag die in C1 moet verschijnen is dus eigenlijk afhankelijk van de 7 toggle buttons.

Bijgaand en vbtje met een aantal hulpkolommen hoe het zou moeten werken.
Kunnen deze 2 VBA's samen gevoegd worden tot 1?
Als het niet zonder deze hulp kolommen kan mogen deze ook in een apart tabblad komen te staan.
 

Bijlagen

  • Toggle button 3.xlsm
    33,5 KB · Weergaven: 26
Ik weet de handelingen die je doet niet helemaal Willem.

Ik had het zo in gedachten, maar zal dan waarschijnlijk niet juist zijn.
Klik op togglebutton 'Maandag': in C1 'Di'.
klik daarna op button 'Dinsdag': in C1 'Wo'
Enz.
 

Bijlagen

  • toggle button (2).xlsm
    62,5 KB · Weergaven: 30
Het geheel gaat om diensten te roosteren.
Iedereen heeft op een bepaalde dag van de week een dienst. (niet iedere week)
Deze dag staat in kolom B achter de naam

Als button maandag groen is (rest rood) dan zie ik alleen de kolommen van alle maandagen en dan wil ik in Cel C1 'ma' zien.
Hierdoor worden de rijen geel gekleurd van de mensen die op maandag dienst hebben.

Als button Dinsdag groen is (rest rood) dan zie ik alleen de kolommen van alle dinsdagen en dan wil ik in Cel C1 'di' zien.
Hierdoor worden de rijen geel gekleurd van de mensen die op dinsdag dienst hebben.
enz.

Het probleem is als er 2 buttons groen zijn of als ik een groene in rood verander.
Dan moet C1 aangepast worden

vb:
Uitgangspunt 'Ma' en 'Di' zijn groen en in C1 staat 'Ma'
Klik ik nu toggle button 'maandag' aan dan wordt deze rood en zie je alleen de kolommen met alle dinsdagen en dan moet dus C1 ook 'di' worden.

C1 moet dus overeenkomen met (een van) de groene toggle button(s)

Als er meerdere groen zijn dan moet er een keuze gemaakt worden, de laagste dag van de week kiezen die groen is leek mij het eenvoudigst te definieren.
Als je nl de laatst gekozen neemt kom je in problemen op het moment dat je deze weer rood wordt.
Andere ideeën voor het probleem van 2 (of meer) groene buttons zijn ook welkom.
 
Even teruggegaan naar de basis Willem.

Togglebutton1 i.p.v. Tgb_Maandag etc.
Kijk eens of je er verder mee kan.
 

Bijlagen

  • Togglebutton(HSV).xlsm
    35,3 KB · Weergaven: 36
Hallo Harry

In dit bestandje werkt het perfect zo als ik het zo willen.

Echter, van het ene probleem kom je in een ander :evil: :evil:
Ik zit nu nl met het probleem van de benaming van de button en van cel C1

Hoe combineer ik nu de 2 onderstaande vba's tot 1
Waarin in cel c1 dus de korte dag notering van de weekdag komt te staan (ma, di enz) en toch de benaming van de button kan wijzigen in 'maandag tonen' en 'maandag verbergen'


Code:
Private Sub Tgb_Column_Maandag_Click()
Dim rB As Range
    Application.ScreenUpdating = False
    
'   Per cel wordt gekeken of de dag op een maandag valt.
    For Each rB In Range("E1:GD1")
        If Weekday(rB.Value) = 2 Then rB.EntireColumn.Hidden = Tgb_Column_Maandag.Value
    Next
    Tgb_Column_Maandag.Caption = WorksheetFunction.Choose(Abs(Tgb_Column_Maandag.Value) + 1, "MAANDAG VERBERGEN", "MAANDAG TONEN")
    
'   Als de knop wordt ingedrukt dan verandert de knop van rood naar groen en omgekeerd.
    With Tgb_Column_Maandag
        If .Value = True Then .BackColor = vbRed Else .BackColor = vbGreen
        If .Value = False Then Range("c1") = "Ma"

    End With
    Application.ScreenUpdating = True
End Sub
Code:
Private Sub Togglebutton1_Click()
Dim rB As Range
    Application.ScreenUpdating = False
Dim j As Long
   
For j = 1 To 7
If ActiveSheet.OLEObjects("Togglebutton" & j).Object.Value = False Then


   Range("C1") = ActiveSheet.OLEObjects("Togglebutton" & j).Object.Caption
    GoTo einde
    End If
    Next
einde:
    With ToggleButton1 'Maandag
        If .Value = True Then .BackColor = vbRed Else .BackColor = vbGreen
        

    End With
    Application.ScreenUpdating = True
End Sub
 
Hoi Willem,

Zoals eerder vermeld; terug naar de basis.
De groepering van de buttons verwijderd (toggelbutton & j).object.

Probeer het eens.
 

Bijlagen

  • toggle button popipipo.xlsm
    62,5 KB · Weergaven: 38
Je hebt me helemaal blij :d gemaakt.:thumb:
Mooi Willem, daar wordt ik dan weer blij van. :)

Zoals je misschien wel gezien hebt in het bestand, moet je de 2 in onderstaande regel even ophogen per togglebuttoncode.

Code:
If Weekday(rB.Value) = [COLOR="red"]2[/COLOR] Then rB.EntireColumn.Hidden = ToggleButton1.Value

Succes ermee.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan