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

beveiligen?

Status
Niet open voor verdere reacties.

maarten drenth

Gebruiker
Lid geworden
25 aug 2007
Berichten
55
Beste Forum gebruikers,

Ik zit nog steeds met een probleem. De situatie is als volgt:

Ik heb een werkblad waarvan de kolommen A tm F data bevatten die je kan invullen. De
kolommen G tm Z bevatten allerlei formules. Nu wil ik het volgende.

Ik wil de fomules beveiligen zodat men hier niks aan kan veranderen of verwijderen. Tevens wil ik een knop waarmee je een rij kan invoegen en de formules van de daar bovenstaande rij gecopieerd worden.

Nu heb ik mijn werkblad beveiligd door de cellen met de formules te locken. Nu loop ik er alleen tegen aan dat het invoegen en copieren van een rij niet lukt.

Concreet: De formules van de cellen G5 tm Z15 moeten beveiligd worden.
Als ik in cel A15 sta en op een knop druk.. dan zou ere en rij tussengevoegd moeten worden die gelijk de fomules van rij 14 bevat (G14 tm Z14 moet dus gecopieerd woerden).

Heeft iemand een idee?

Ik hoor het graag. Ik ben hier al een tijdje mee bezig maar ik kom er niet uit.

Alvast bedankt
 
Ik denk dat je er met het volgende moet komen:

Code:
Private Sub Workbook_Open()

  Sheets("jouw werkblad").Protect , UserInterfaceOnly:=True
Je kan ook in het stukje macro wat je knop aanroept de werkblad beveiliging uitzetten, macro draaien en beveiliging weer aanzetten.

Ik ben een VBA beginner, dus correct me if i'm wrong:rolleyes:
 
Hoi

Ik denk idd dat wat jij zegt de oplossing is. Een macro maken die eerst de beveiliging uit zet, dan de rij invoegt en de formules copieerd en dan de beveiliging weer aan zet.

Zelf heb ik geen idee hoe je deze VBA schrijf. Iemand anders een idee?

Alvast bedankt.
 
probeer eens aan het begin:
Code:
ActiveSheet.Protect , userinterfaceonly:=True
Zo beveilig je het werkblad, maar geef je de macro wel toegang.

anders zal je moeten werken met bovenaan:
Code:
ActiveSheet.UnProtect
macro....
....
Code:
ActiveSheet.Protect
 
Laatst bewerkt:
Hoi Hoi

Vandaag weer wat zitten rommelen.

Ik ben weer een stapje verder gekomen door een macro op te nemen en vervolgens wat aan te passen.

De code ziet er nu als volgt uit:

Sub Rijinvoegen1()
'
Code:
    ActiveSheet.Unprotect
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Range("P22:Z22").Select
    Selection.AutoFill Destination:=Range("P22:Z23"), Type:=xlFillDefault
    Range("P22:Z23").Select
    ActiveSheet.Protect
End Sub

Nu zijn de volgende dingen nog niet helemaal goed.

1. Als het kan wil ik een wachtwoord gebruiken. Dus om de beveiliging era f te halen moet het wachtwoord in de code vermeld worden. Hoe doe ik dit?
2. De formules van de cellen P22:Z22 worden nu gecopieerd. Maar ik wil dat de formules van de rij boven de ingevoegde rij worden gecopieerd.Dit is dus niet altijd P22:Z22, maar is afhanleijk van de plek waar ik de rij wil invoegen. Hoe doe ik dit?

Kunnen jullie me weer verder helpen?
 
1) Maak er dit van:

Code:
ActiveSheet.Protect , userinterfaceonly:=True
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
Range("P22:Z22").Select
Selection.AutoFill Destination:=Range("P22:Z23"), Type:=xlFillDefault
Range("P22:Z23").Select

En geef het blad handmatig een password.


2) dat gaat te ver voor mijn VBA kennis.
 
Laatst bewerkt:
Of met jouw code, voeg de rode tekst aan je code toe:

Code:
ActiveSheet.Unprotect [COLOR="Red"]Password:="Jouwpassword"[/COLOR]
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
Range("P22:Z22").Select
Selection.AutoFill Destination:=Range("P22:Z23"), Type:=xlFillDefault
Range("P22:Z23").Select
ActiveSheet.Protect [COLOR="red"]Password:="Jouwpassword"[/COLOR]

Vraag 2 zou ik niet weten.

mvg
Charles
 
Laatst bewerkt:
het invoegen en verwijderen van rijen lijkt me nu te lukken ondanks dat er een password op zit. bedankt voor alle info.

nu alleen nog een oplossing voor het copieren van de formules van de rij die boven de ingevoegde rij staan.

iemand een idee?
 
Hoi

Als ik in cel A15 sta en op een knop druk.. dan zou er en rij tussengevoegd moeten worden die gelijk de fomules van rij 14 bevat (G14 tm Z14 moet dus gecopieerd worden).

Begrijp je wat ik bedoel?
Bovenstaande is slechts een voorbeeld. Het kan ook zijn dat ik heel ergens anders een rij wil invoegen. Ook dan moeten dus de formules van de rij er boven gecopieerd worden.
 
Hoi

Als ik in cel A15 sta en op een knop druk.. dan zou er en rij tussengevoegd moeten worden die gelijk de fomules van rij 14 bevat (G14 tm Z14 moet dus gecopieerd worden).

Begrijp je wat ik bedoel?
Bovenstaande is slechts een voorbeeld. Het kan ook zijn dat ik heel ergens anders een rij wil invoegen. Ook dan moeten dus de formules van de rij er boven gecopieerd worden.

Heb vanavond geen tijd meer, maar als je morgen geen antwoord hebt (van anderen), zal ik voor wat code zorgen.
 
super... ik ben benieuwd...

mag ik gelijk iets anders vragen... hoe heb jij de visual basic geleerd?
ik zit er aan te denken om me hier eens echt in te gaan verdiepen want ik vind het erg leuk.
 
super... ik ben benieuwd...

mag ik gelijk iets anders vragen... hoe heb jij de visual basic geleerd?
ik zit er aan te denken om me hier eens echt in te gaan verdiepen want ik vind het erg leuk.

gewoon doen. Wat met de macrorecorder spelen, wat voorbeeldcode van anderen analyseren. Zelf op ontdekkingstocht gaan maw.
 
Volgende code zal een lege rij invoegen en de op die rij alle formules van de rij daarboven copieren naar de nieuwe rij.

Code:
Sub Invoegen()
Dim HuidigeRange As Range
Dim CopyRow As Range

Set HuidigeRange = Selection
HuidigeRange.EntireRow.Insert xlShiftDown

On Error Resume Next
Set CopyRow = HuidigeRange.EntireRow.Offset(-2).SpecialCells(xlCellTypeFormulas)
On Error GoTo 0

If Not CopyRow Is Nothing Then
    CopyRow.Copy CopyRow.Offset(1)
End If
End Sub

Laat je weten of deze doet wat je verwacht?

groeten,

Finch
 
Hoi Finch,

Er staat in de code ook "huidige range". Moet ik hier zelf iets invullen?
En maakt het uit dat dit nederlands is ipv engels?
 
Hoi Finch,

Er staat in de code ook "huidige range". Moet ik hier zelf iets invullen?
En maakt het uit dat dit nederlands is ipv engels?

Nee hoor, je moet nergens iets zelf invullen.
Variabelen binnen VBA mag je zelf een naam geven. Ik heb hier gekozen voor een NL naam, maar een ENG naam of gelijk andere taal is OK. Uiteraard zijn er wel namen voorbehouden voor VBA zelf, maar die leer je door ervaring (en VBA zal je bij het compileren waarschijnlijk wel wijzen of foutieve namen).

Als niet alle formules in de hele rij gecopieert moeten worden dien je wel een aanpassing te doen, maar in deze code selecteert hij zelf de cellen met formules en copieert deze dan.
 
Hoi

Ik heb net de code geknipt en geplakt. tets gedana maar krijg error "400".
Er wordt wel een rij ingevoegd maar geen formules gecopieerd..

enig idee?
.
 
Heb je een voorbeeldbestandje waar je die foutmelding ook krijgt?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan