Clever-Excel-Forum

Normale Version: Zeile hinzufügen im geschützten Blatt und Formeln übernehmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ein wunderschönen Samstag liebe Forum-Mitglieder,

ich möchte durch eine Befehlsschaltfläche meinen Kollegen erlauben eine neue Zeile (innerhalb einer Tabelle) einzufügen.
Zitat:Private Sub CommandButton1_Click()
    Dim rowNum As Integer
    On Error Resume Next
    rowNum = Application.InputBox(Prompt:="In welcher Zeile wollt ihr eine neue Zeile hinzufügen? Bitte wählt die angegebene Zahl links neben dem Knopf:", _
                                    Title:="Leere Zeile hinzufügen", Type:=1)
    Rows(rowNum & ":" & rowNum).Insert Shift:=xlDown
End Sub

Nun muss ich das Arbeitsblatt leider schützen und mehrere Spalten sind komplett geschützt.
Dadurch werden die Formeln aus den anderen Zeilen nicht übernommen. (z.B. =Summe, =Monat). 
Hätte jemand eine Idee, wie man dies besser machen könnte? Wenn ich den Schutz aufhebe, ist das gar kein Problem. 
Das ist leider keine Option.

LG Soshi
dann heb den schutz kurz auf. zeile einfügen, schutz wieder setzen. 

Rows(rowNum & ":" & rowNum)  wenns funktioniert ok, aber da reicht auch Rows(rowNum).entirerow
vielen Dank ralf_b!

Ich bin mir immer noch nicht bewusst, welche Möglichkeiten mit VBA bestehen.
Damit funktioniert es in meiner Testmappe aufjeden Fall :)

Edit: Es funktioniert leider nicht und fügt gar keine neue Zeile ein...

Code:
Sub Blattschutz_ein_mit_Passwort()
    Sheets("Tabelle1").Protect Password:="123"
End Sub

Private Sub CommandButton1_Click()
    Dim rowNum As Integer
    On Error Resume Next
    rowNum = Application.InputBox(Prompt:="In welcher Zeile wollt ihr eine neue Zeile hinzufügen? Bitte wählt die angegebene Zahl links neben dem Knopf:", _
                                    Title:="Leere Zeile hinzufügen", Type:=1)
    Rows(rowNum).EntireRow.Insert Shift:=xlDown
End Sub
Sub Blattschutz_aus_mit_Passwort()
    Sheets("Tabelle1").Unprotect Password:="123"
End Sub
nur so mal zum probieren.
aber zum schutz solltest du mal mehr recherchieren. habe damit leider wenig erfahrung.
    
Sheets("Tabelle1").Unprotect Password:="123"
Rows(rowNum).EntireRow.Insert Shift:=xlDown
Sheets("Tabelle1").protect Password:="123"
Die Methode von Ralf ist zu vermeiden, denn wenn der Code nach dem Aufheben des Blattschutzes - warum auch immer - abschmiert, bleibt das Blatt ungeschützt. Bessere Methode:

In das Modul DieseArbeitsmappe
Code:
Private Sub Workbook_Open()
Worksheets("Tabelle1").Protect Password:="Kennwort", UserInterfaceOnly:=True
End Sub

Und dann dein Code, aber bitte ohne OnError, das soll auch vermieden werden.
Code:
Private Sub CommandButton1_Click()
    Dim rowNum As Integer
    rowNum = Application.InputBox(Prompt:="In welcher Zeile wollt ihr eine neue Zeile hinzufügen? Bitte wählt die angegebene Zahl links neben dem Knopf:", _
                                    Title:="Leere Zeile hinzufügen", Type:=1)
    Rows(rowNum).Insert Shift:=xlDown
End Sub
das funktioniert einwandfrei! Danke dir :)

Wieder etwas dazu gelernt!