Zeile hinzufügen im geschützten Blatt und Formeln übernehmen
#1
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
Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • Soshi
Top
#3
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
Top
#4
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"
Top
#5
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
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • Soshi
Top
#6
das funktioniert einwandfrei! Danke dir :)

Wieder etwas dazu gelernt!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste