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

Regels invoegen blokkeren

Status
Niet open voor verdere reacties.

JANHooyman

Gebruiker
Lid geworden
8 okt 2021
Berichten
49
Hallo Excel experts.

Is er een mogelijkheid om te voorkomen dat er regels handmatig worden ingevoegd in een werkblad, zonder het gebruik van regels/titels blokkeren of het blad beveiligen.

MVG Jan
 
Ik heb dit bedacht, gevonden op internet.
Achter het blad plaatsen en je kunt een gebuikersnaam opgeven, gebruikersnaam Windows.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim authorizedUsers As Variant
    Dim currentUser As String
    
    authorizedUsers = Array("gebruiker1", "gebruiker2", "gebruiker3")
    currentUser = Application.UserName
    
    If Target.EntireRow.Row > 1 Then
        If IsInArray(currentUser, authorizedUsers) Then
            'toestaan dat gebruiker rij invoegt
        Else
            Application.EnableEvents = False
            Rows(Target.EntireRow.Row).Delete
            Application.EnableEvents = True
            MsgBox "Je kunt geen nieuwe rijen invoegen in dit werkblad"
        End If
    End If
End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function


Groetjes
 
Ik probeerde hem ook maar je kunt als je geen gebruikersnaam invult op het codeblad ook geen celbewerking doen, misschien kunnen de vba specialisten hier wat mee als je het nodig vindt.
 
Getest en idd je hebt gelijk, maar ik krijg een melding dat ik een rij niet kan invoegen dat is prima. En iets in een cel typen kan ook niet want dan komt dezelfde melding. Wat ook bijzonder is als ik 2 of meer regels copy paste doe dan staat het er wel op de bovenste regel na.
Dus copy paste 2 regels de eerste wordt verwijderd melding komt maar de 2e regel blijft wel staan eventueel dus ook meerdere regels als je die geselecteerd hebt. Een gebruikers invoer om we te kunnen invoegen krijg ik niet.. Dit werkt dus niet zoals gewenst. De speurtocht gaat verder.
 
Je kunt ook dit achter het workbook zetten.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If ((Target.Address = Target.EntireRow.Address Or _
         Target.Address = Target.EntireColumn.Address)) Then


        With Application
            .EnableEvents = False
            .Undo
            MsgBox "No deleting rows or columns", 16
            .EnableEvents = True
        End With
        
    Else
    
        Exit Sub
        
    End If

End Sub

Code zal misschien aangepast moeten worden.

Groetjes
Johan
 
Laatst bewerkt:
Johan,

Deze code doet niets bij mij helaas.

Maar ik ben nog even aan het zoeken geweest en een hele simpele oplossing gevonden.
Om te voorkomen dat er regels ingevoegd kunnen worden ga naar de laatste regel in het werkblad en zet tekst o.i.d in de laatste cel.
Nu kun je geen regels meer invoegen.
Indien je een regel zou verwijderen dan kun je wel weer een regel toevoegen. Of als je de laatste cel leeg maakt.
Dit is ook van toepassing voor de kolommen, om te voorkomen dat kolommen worden toegevoegd vul geheel rechts een tekst in de cel.
Wil je geen regels en kolommen kunnen invoegen, vul dan een tekst in de cel geheel rechts onderaan in het werkblad in. rijen en kolommen invoegen kan dan niet meer.
Zolang er geen regels/kolommen worden verwijderd althans.
 
Bij mij werkt die bovenstaande code wel maar als je het kan redden zonder vba is beter.
Ik had wel bovenstaande code veranderd, ter aanvulling.

Veel succes.
Johan
 
Johan

in hoeverre moet de code aangepast worden als ik vragen mag.




Je kunt ook dit achter het workbook zetten.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If ((Target.Address = Target.EntireRow.Address Or _
         Target.Address = Target.EntireColumn.Address)) Then


        With Application
            .EnableEvents = False
            .Undo
            MsgBox "No deleting rows or columns", 16
            .EnableEvents = True
        End With
        
    Else
    
        Exit Sub
        
    End If

End Sub

Code zal misschien aangepast moeten worden.

Groetjes
Johan
 
Dit is een code van internet, misschien is hij niet naar je zin en kunnen de vba specialisten hem misschien verbeteren of inkorten.
Ik begrijp vba wel een beetje maar zelf schrijven is wel een dingetje.
Daarom stond dat erbij.
Deze code werkt bij mij wel tenminste.
Groetjes
 
Johan, duidelijk bedankt ik red me voorlopig met de simpele oplossing.
Allen fijn weekend
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan