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

Beveiliging van blad met macro's en melding voorkomen

Status
Niet open voor verdere reacties.

Instel

Gebruiker
Lid geworden
6 jan 2021
Berichten
61
Beste forumleden,

Ik ben al een tijdje bezig om mijn Excel document met macro's te kunnen beveiligen, dit was gelukt maar blijkbaar heb ik iets gedaan waardoor het toch weer fout gaat. Ik krijg steeds een foutmelding van een macro, schijnbaar doe ik iets niet goed. Ik kan er alleen zelf niet goed achter komen wat ik nou precies fout doe.

In de tijd dat ik de macro wel werkend had, kreeg ik bij het opstarten telkens de vraag om mijn wachtwoord in te voeren, dit wil ik in de toekomst graag voorkomen. Daarnaast begon mijn beeld te knipperen zodra een macro werd doorgevoerd, herkent iemand dit? Zo ja, enig idee wat ik hier tegen kan doen?

Ik heb als voorbeeld mijn testbestand bijgevoegd.

Bij voorbaat dank.
 

Bijlagen

Beste,

Je macro zegt:

Code:
Private Sub Workbook_Open()
Sheets("Invoerblad Vervoerder").Protect userinterfaceonly:=True, AllowFiltering:=True
End Sub

Maar je blad heet "Invoerblad"

Je macro vind dan ook geen "Invoerblad Vervoerder"

Krijg je het hiermee opgelost?

rikja
 
als je geen beveiliging meer wil verwijder ze dan gewoon

en dat knipperen voorkom je door uw code aan te passen. iedere keer select geeft een knipper.

probeer het zo eens
 

Bijlagen

En de code in #3 is te reduceren tot
Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address(0, 0) = "L1" Then
    Unprotect "test"
    Range("$L$8").Resize(5) = Sheets("data").Range("$C$17").Resize(5).Value
    Protect "test"
  End If
End Sub

Nb. gebruik geen onnodige spaties in tabnamen en al helemaal niet aan het eind van de naam.
 
Laatst bewerkt:
als je geen beveiliging meer wil verwijder ze dan gewoon

en dat knipperen voorkom je door uw code aan te passen. iedere keer select geeft een knipper.

probeer het zo eens

Je zou mijn originele bestand moeten zijn, daar word je niet blij van. Ik ken net de basis (of nog niet eens) van VBA. Ik heb een gedrocht van een bestand waarin veel cellen worden aangepast en telkens "Select" gebruikt. Als ik select telkens "select "vervang voor de formule van VenA, krijg ik dan niet meer dat geknipper denk je?

Het beveiligen van het uiteindelijke document is nodig, omdat ik het ga delen met andere partijen.
 
Laatst bewerkt:
En de code in #3 is te reduceren tot
Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address(0, 0) = "L1" Then
    Unprotect "test"
    Range("$L$8").Resize(5) = Sheets("data").Range("$C$17").Resize(5).Value
    Protect "test"
  End If
End Sub

Nb. gebruik geen onnodige spaties in tabnamen en al helemaal niet aan het eind van de naam.

Bedankt, dat gaat zeker schelen. Ik heb ook een keuze uit "Änder voertuig" waarbij ik wil dat bepaalde cellen met waarde wegvallen en alleen "Elektrificatie" blijft staan. Nu had ik het zo dat met Selection.ClearContents de cel werd leeggemaakt, heb je hier ook een alternatief voor? (Macro komt uit mijn originele bestand)

If Target.Column = 12 And Target.Value = "Ander voertuig" Then
Application.Goto (ActiveWorkbook.Sheets("Invoerblad").Range("$L$21"))
Selection.ClearContents
End If
 
Maak van
Code:
If Target.Column = 12 And Target.Value = "Ander voertuig" Then
Application.Goto (ActiveWorkbook.Sheets("Invoerblad").Range("$L$21"))
Selection.ClearContents
End If
eens
Code:
If Target.Column = 12 And Target.Value = "Ander voertuig" Then Sheets("Invoerblad").Range("$L$21").ClearContents
 
plaats een voorbeeld, aan de hand van een klein stukje code kan niet alles opgelost worden.

Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address(0, 0) = "L1" Then
    Unprotect "test"
    Range("$L$8").Resize(5) = Sheets("data").Range("$C$17").Resize(5).Value
    Protect "test"
If Target.Column = 12 And Target.Value = "Ander voertuig" Then
     Range("$L$21")).ClearContents
 End If
End Sub

ps quate is niet nodig en plaats code tussen codetags
 
Hoi Emiel,

Ik heb mijn bestand aangepast. Ik heb alle codes die ik uit deze thread heb kunnen halen uitgeprobeerd maar ik blijf foutmeldingen krijgen. Voornamelijk "End If zonder blok If". IK heb nu mijn huidige macro's weer toegepast. Misschien dat het voor jou nu makkelijker is om wat advies te geven hierop. Mijn doel is om "Invoerblad Vervoerder" beveiligd te krijgen zonder dat het beeld gaat knipperen en dat bij het openen niet steeds wordt gevraagd om "vul het wachtwoord in".

Let maar niet op de inhoud, dat klopt niet echt. Alle ruimtes die leeg zijn zal ik in mijn huidige bestand weer opvullen met info dat ik nu heb weggehaald.

Kun je hier iets mee?
 

Bijlagen

Blijkbaar mag alleen @emields reageren?

Misschien eens bij het begin beginnen.
Wat denk je dat een Worksheet_Change in de module van een werkblad doet?
Waarom wil je een interactie op elke wijziging in kolom H? Het type voertuig kies je toch in, nu weer, L14?
Code:
Application.Goto (ActiveWorkbook.Sheets("Invoerblad Vervoerder").Range("$L$22"))
is toch totaal overbodig?
Waarom steeds de validatie opnieuw instellen?
Waarom noem je een tab 'Data tbv Grafiek'?

Probeer met een goed en representatief voorbeeld te komen en dan wordt je vast wel verder geholpen door @emields
 
probeer het zo eens, want ik vond net zoals een kat er geen jongen in terug. En dan staan blijkbaar nog niet alle gegevens in uw voorbeeld.

En zo kan je ook het blad beveiligen tegen mensen met een goede excel kennis.
 

Bijlagen

Excuus VenA, ik neem graag elk advies en hulp tot mij. Het zit zo dat het een bestand is waarbij een gebruiker gegevens over zijn voertuig kan invoeren. Ik heb het document zo gemaakt dat wanneer iemand geen gegevens invoert maar een voertuig kiest, een standaardwaarde te zien krijgt. Dit geldt ook voor de prijs van de brandstof, het verbruik de pompsnelheid etc. Echter kan de gebruiker deze standaardwaarde desgewenst overschrijven. Zodra de gebruiker het voertuig zou veranderen komen de standaardwaarde weer te voorschijn.

In mijn originele bestand staat er ook een grafiek in van de totale kosten over een bepaalde looptijd, echter daar komt geen macro van te pas. Ik heb de twee tabbladen waarbij macro's worden gebruikt eruit gefilterd.

Sorry als ik wat onduidelijk ben geweest, dit is het eerst dat ik hulp vraag via een forum zoals dit.
 
Bedankt Emields, misschien dat met mijn bovenste verhaal het iets duidelijker is geworden, de beveiliging moet alleen gaan gelden voor de zwarte cellen in de map. De blauwe en paarse cellen zijn cellen waar de gebruiker gegevens kan invoeren of waar een standaardwaarde tevoorschijn komt. Hebben jullie graag dat ik het testbestand alsnog aanpas? Het enige wat ik zou kunnen doen is de cellen onder elkaar zetten ipv de witte ruimte die er nu tussenzit.
 
Ja dat heb ik geprobeerd, werkt uitstekend! Echter moet de gebruiker nog zelf de mogelijkheid hebben om in de paarse velden iets te kunnen invullen. Dat lukt alleen met macro's die de cel invullen bij de voertuigkeuze lijkt mij.
 
ik vind het vrij zinloos dat een gebruiker iets kan invullen wat nergens anders terug te vinden is in uw data. Hoe ga je dan een berekening maken?

zie het voorbeeld
 

Bijlagen

In het normale bestand is er een blad "uitgangspunten" die de data uit het invoerblad overneemt voor de berekening. Het tabblad "Data" wordt vervolgens weer gebruikt om data op te slaan als input voor bepaalde tabellen en grafieken. Maar alle variabele komen uit het invoerblad.
 
Ik heb mijn macro's nu aangepast met de feedback van @Fina en @Haije, ik krijg echter een foutmelding genaamd "End If zonder Blok If". Heeft iemand enig idee wat ik hier fout doe? Ik heb nu alle "Select" uit de macro's gehaald. Als dit werkt zou ik ook de beveiliging moeten kunnen doen zonder dat mijn beeld begint te knipperen
 

Bijlagen

Hallo instel,

niet

If [vergelijking] Then [Uit te voeren code]
End If

maar

If [vergelijking] Then
[Uit te voeren code]
End If

Groeten,

Rikja
 
Laatst bewerkt:
Hoi Rikja, ik heb het aangepast, "End If zonder Blok If" is nu weg, maar nu geeft VBA steeds een gele balk op een willekeurig stukje macro zonder waarschuwing :confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan