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

Macro werkend houden bij beveiliging werkblad

  • Onderwerp starter Onderwerp starter rv82
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

rv82

Gebruiker
Lid geworden
1 apr 2020
Berichten
14
Ik heb de volgende VBA code om te zorgen dat ik meerdere resultaten kan selecteren in een dropdown. Probleem is dat deze niet meer werkt zodra ik het werkblad beveilig. Stel dat het wachtwoord test123 is, wat zou ik dan moeten aanpassen om dit voor elkaar te krijgen?

Alvast bedankt!

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Column = 3 Or Target.Column = 5 Then
  If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
  Else: If Target.Value = "" Then GoTo Exitsub Else
    Application.EnableEvents = False
    Newvalue = Target.Value
    Application.Undo
    Oldvalue = Target.Value
      If Oldvalue = "" Then
        Target.Value = Newvalue
      Else
        If InStr(1, Oldvalue, Newvalue) = 0 Then
            Target.Value = Oldvalue & ", " & Newvalue
      Else:
        Target.Value = Oldvalue
      End If
    End If
  End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True

End Sub
 
Moet de eerste Application.EnableEvents = True niet false zijn?

welke error ga je hier ondervangen?
Code:
On Error GoTo Exitsub
 
In het begin:
Activesheet.UnProtect "test123"

Aan het eind:
Activesheet.Protect "test123"

En naast wat VenA zegt is die code totaal onleesbaar.
 
Laatst bewerkt:
zet de werkzame code tussen Unprotect en Protect:

Code:
Sub SjonR()
ActiveSheet.Unprotect "Test123"

'' werkende code

ActiveSheet.Protect "Test123"

End Sub
 
Je code een beetje opgekalefatert zodat het leesbaar is en de zaken voor je vraag er in gezet.
Zonder te testen uiteraard omdat je geen documentje hebt geplaatst.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
        
    If Target.Column = 3 Or Target.Column = 5 Then
        Application.EnableEvents = False
        ActiveSheet.Unprotect "test123"
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
        
        If Oldvalue = "" Then
            Target.Value = Newvalue
        Else
            If InStr(1, Oldvalue, Newvalue) = 0 Then
                Target.Value = Oldvalue & ", " & Newvalue
            Else
                Target.Value = Oldvalue
            End If
        End If
    End If
    
    ActiveSheet.Protect "test123"
    Application.EnableEvents = True
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan