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

2 stukjes vba in 1 ToggleButton combineren

Status
Niet open voor verdere reacties.

Friend

Verenigingslid
Lid geworden
31 jan 2009
Berichten
1.128
Beste forummers,

Graag zou ik deze 2 opdrachten in 1 ToggleButton zetten.

Code:
Private Sub ToggleButton2_Click()

Dim cl As Range, y As Long, c As Range
ActiveSheet.Unprotect "123"
With ToggleButton2
    y = IIf(.Value, 1, 2)
 .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
End With
For Each cl In Columns(8).SpecialCells(2)
 Set c = Sheets("vertaling").Columns(y).Find(cl, , xlValues, xlWhole)
     If Not c Is Nothing Then
       If y = 2 Then
         cl = c.Offset(, -1).Value
       Else
         cl = c.Offset(, 1).Value
       End If
    End If
 Next cl

 ActiveSheet.Protect "123"
End Sub

+
Code:
Private Sub ToggleButton3_Click()

Dim cl As Range, y As Long, c As Range
ActiveSheet.Unprotect "123"
With ToggleButton3
    y = IIf(.Value, 1, 2)
 .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
End With
For Each cl In Rows(4).SpecialCells(2)
 Set c = Sheets("vertaling").Columns(y).Find(cl, , xlValues, xlWhole)
     If Not c Is Nothing Then
       If y = 2 Then
         cl = c.Offset(, -1).Value
       Else
         cl = c.Offset(, 1).Value
       End If
    End If
 Next cl

 ActiveSheet.Protect "123"
End Sub


Hartelijk dank

Friend
 
Laatst bewerkt:
Niet zo'n probleem, maar zonder document blijft het een gok. Kijk ook of de eerste If de juiste controle doet.

Code:
Private Sub ToggleButton2_Click()

Dim cl As Range, y As Long, c As Range
ActiveSheet.Unprotect "123"

If ToggleButton2.Caption = "Engels" Then
    With ToggleButton2
	y = IIf(.Value, 1, 2)
       .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
    End With
    For Each cl In Columns(8).SpecialCells(2)
    Set c = Sheets("vertaling").Columns(y).Find(cl, , xlValues, xlWhole)
        If Not c Is Nothing Then
           If y = 2 Then
               cl = c.Offset(, -1).Value
           Else
               cl = c.Offset(, 1).Value
           End If
       End If
    Next cl
Else
    With ToggleButton2
        y = IIf(.Value, 1, 2)
       .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
    End With
    For Each cl In Rows(4).SpecialCells(2)
        Set c = Sheets("vertaling").Columns(y).Find(cl, , xlValues, xlWhole)
        If Not c Is Nothing Then
            If y = 2 Then
                cl = c.Offset(, -1).Value
            Else
                cl = c.Offset(, 1).Value
            End If
        End If
    Next cl
End If
ActiveSheet.Protect "123"
End Sub
 
Laatst bewerkt:
Loop het nog eens bij langs Ed.
With togglebutton ?
Zowel de bovenste als het onderste deel.
 
Kweetut. Kan een stuk netter. Maar het was meer om TS een idee te geven.
 
Zonder voorbeeldbestand moet je niet zeuren over netheid. :D
Nee, ik bedoelde; er ontbreekt een cijfer achter "togglebutton".
Jij kan het zo aanpassen.
 
Laatst bewerkt:
Volgens mij is het de bedoeling om de zaak onder 1 knop te brengen en dan heb je maar 1 ToggleButton.
Wat dat ene cijfertje betreft heb je gelijk en die heb ik nu aangepast :)
 
Laatst bewerkt:
Verhip, je hebt gelijk.
 
Beste Edmoor, (en natuurlijk Harry)

Hartelijk dank voor je reactie en samenvoegen :thumb: Ik heb geen VBA kennis en deze mooie code voor de colums was dan ook met dank aan Harry:thumb:

Hierna had ik een 3e ToggleButton gemaakt gebaseerd om de script van Harry maar dan om rows te vertalen.

Dus toen kwam de wens om het in één ToggleButton beide opdrachten te kunnen doen.

Trouwens leuk om jullie conversatie te lezen :d

Edmoor ik heb echter alleen nog een probleempje: de Rows worden keurig vertaald maar de colums niet :eek:

Zie ik iets over het hoofd??

Ik zie in de code dat je deze regel hebt toegevoegd:
Code:
If ToggleButton2.Caption = "Engels" Then

Hoor graag van je (of jullie natuurlijk)

Hartelijke dank

Friend
 
Hij kijkt wat er als tekst op de knop staat en voert dan het ene of het andere gedeelte uit. Aan die code is niets gewijzigd. Dus als dat werkte werkt het nu ook. Daarom zei ik dat je even moet kijken of de eerste If wel op het juiste opschrift controleert.
 
Edmoor,

Sorry toch even verwarring bij mij in de script van Harry, zie ik die regel niet.

??

Friend
 
Nee, uiteraard niet. Omdat dat (If.. Then.. Else) het gedeelte is om de 2 functies onder 1 knop te kunnen brengen.

Zo zie je maar weer dat dit soort zaken veel beter gaat met een voorbeeld documentje.
 
Edmoor,

Tja daar gaat mijn niet kennis van VBA :eek:, maar bij deze even een uitgekleed voorbeeld bestandje.

Hij gekke is dat hij de tekst op de ToggleButton ook precies omdraait. engels ald het nederlands moet zijn.

Wachtwoord is gewoon even 123

hoor weer graag

Thanks

Friend
 

Bijlagen

  • namenomzetten-2.xlsm
    24,8 KB · Weergaven: 47
Friend,

Volgens mij gaat het nu goed.
 

Bijlagen

  • namenomzetten-3.xlsm
    25 KB · Weergaven: 36
EA,

Hartelijk, dank voor je reactie :thumb: Alleen als ik ik jouw bijlage 3 open dan wordt nog steeds alleen de Row vertaald en niet de column ??????

Friend
 
Vriend,

Ik heb verder niet gekeken, dacht dat het enkel om de tekstverandering op de knop ging.
Heb verder geen tijd om in de code te kijken.
We hebben een ziekenhuis dag.
 
Beste EA,

Hartelijk dank klopt inderdaad tekst op ToggleButton werkt nu goed :thumb: thanks.

Sterke op deze ziekenhuis dag.

Inmiddels heb ik de code als volgt aangepast: ofwel de If eruit gehaald en het werkt nu wel:

Code:
Private Sub ToggleButton2_Click()

Dim cl As Range, y As Long, c As Range
ActiveSheet.Unprotect "123"

'If ToggleButton2.Caption = "engels" Then
    With ToggleButton2
    y = IIf(.Value, 1, 2)
       .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
    End With
    For Each cl In Columns(2).SpecialCells(2)
    Set c = Sheets("soorten").Columns(y).Find(cl, , xlValues, xlWhole)
        If Not c Is Nothing Then
           If y = 2 Then
               cl = c.Offset(, -1).Value
           Else
               cl = c.Offset(, 1).Value
           End If
       End If
    Next cl
'Else
    With ToggleButton2
        y = IIf(.Value, 1, 2)
       .Caption = "vertalen in het " & IIf(.Value, "Nederlands", "Engels")
    End With
    For Each cl In Rows(4).SpecialCells(2)
        Set c = Sheets("soorten").Columns(y).Find(cl, , xlValues, xlWhole)
        If Not c Is Nothing Then
            If y = 2 Then
                cl = c.Offset(, -1).Value
            Else
                cl = c.Offset(, 1).Value
            End If
        End If
    Next cl
'End If
ActiveSheet.Protect "123"
End Sub

Hoor nog wel graag eventuele aanvullingen van de experts.

Edmoor, Harry, EA hartelijk dank:thumb:

Friend
 
Kan nog een stuk compacter, en je hoeft de knop natuurlijk ook maar één keer in te stellen:
Code:
    ActiveSheet.Unprotect "123"
    With ToggleButton2
        y = IIf(.Value, 1, 2)
       .Caption = "vertalen in het " & IIf(.Value, "Engels", "Nederlands")
    End With
    For Each cl In Columns(2).SpecialCells(2)
        Set c = Sheets("soorten").Columns(y).Find(cl, , xlValues, xlWhole)
        If y = 2 Then cl = c.Offset(, -1).Value Else: cl = c.Offset(, 1).Value
    Next cl
    For Each cl In Rows(4).SpecialCells(2)
        Set c = Sheets("soorten").Columns(y).Find(cl, , xlValues, xlWhole)
        If y = 2 Then cl = c.Offset(, -1).Value Else: cl = c.Offset(, 1).Value
    Next cl
    ActiveSheet.Protect "123"
 
Michel,

Hartelijk dank voor je reactie :thumb: en compactisering :thumb:
Het werkt weer fantastisch:D

Thanks

Friend
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan