Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

Tabelle mit CommandButton automatisch Sperren


Betrifft: Tabelle mit CommandButton automatisch Sperren von: Patrick Busse
Geschrieben am: 13.03.2018 14:19:43

Guten Tag zusammen,

meine Frage ist folgende.
In der angehängten Datei möchte ich das Immer alles gesperrt ist und niemand etwas verändern kann.
Jedoch Drückt man auf Auftrag absenden, möchte ich gerne das, das Blatt Entsperrt wird und bei erfolgreicher automatisch Eingabe der Textboxen in die Zellen es wieder gesperrt wird.

Ich Hoffe es kann mir jemand helfen bin noch ein Neuling auf dem VBA gebiet und das ist so mein erstes "Projekt"
Sofern mir jemand noch bei dem aktuellen Code Tipps geben könnte wie ich es evtl. Besser oder Einfacher lösen hätte können wäre ich auch Dankbar :)

https://www.herber.de/bbs/user/120381.xlsm

  

Betrifft: AW: Tabelle mit CommandButton automatisch Sperren von: Werner
Geschrieben am: 13.03.2018 14:37:01

Hallo Patrick,

benutze hierzu UserInterfaceOnly:=True beim Start der Datei. Das bewirkt, dass trotz gesperrtem Blatt das Makro Änderungen vornehmen darf. Dann sparst du dir das ständige Entsprerren/Sperren des Blattes im Makro selbst.

Vorgehensweise:
Alle Zellen auswählen (Dreieck oben links zw. Spalten und Zeilenkopf) - Rechte Maustaste im Tabellenbereich - Zellen formatieren - Schutz - Haken bei gesperrt setzen.
Menü Überprüfen - Blatt schützen - Passwort vergeben

Im VBA-Editor (öffnen mit Alt+F11) Doppelklick auf DieseArbeitsmappe.
Im Codefenster rechts folgenden Code:

Private Sub Workbook_Open()
Worksheets("Tabelle der Aufträge").Protect Password:="Patrick", UserInterfaceOnly:=True
End Sub
Bei Password:= mußt du das Passwort eintragen, das du vorher beim Setzen des Blattschutzes angegeben hast.

In deiner Beispieldatei habe ich das Blatt mit dem Passwort "Patrick" geschützt.

https://www.herber.de/bbs/user/120382.xlsm

Gruß Werner


  

Betrifft: AW: Tabelle mit CommandButton automatisch Sperren von: Patrick
Geschrieben am: 13.03.2018 15:26:01

Hallo Werner,

ich danke dir viel mals fürs helfen funktioniert super ! :)
War am Code sonst soweit alles korrekt oder kann ich noch Verbesserungen/Einsparungen vornehmen ?


  

Betrifft: Gerne u.Danke für die Rückmeldung... von: Werner
Geschrieben am: 13.03.2018 15:51:51

Hallo Patrick,

...deinen Code habe ich mir gar nicht angeschaut. Kann ja mal drüber schauen.


Gruß Werner


  

Betrifft: AW: Tabelle mit CommandButton automatisch Sperren von: Werner
Geschrieben am: 13.03.2018 18:01:59

Hallo Patrick,

du brauchst doch nicht für jede Spalte immer wieder die erste freie Zeile zu ermitteln. Das reicht doch einmal, da die Daten aus den Boxen dann ja alle in die gleiche Zeile geschrieben werden.

Private Sub CommandButton1_Click()
Dim loLetzte As Long

If ArtikelnummerBox1 = "" Or ArtderTeileBox1 = "" Or ArtderVermessungBox2 = "" _
Or MaschinennummerBox1 = "" Or AnzahlBox2 = "" Or AuftraggeberBox3 = "" _
Or weitereAnsprechpartnerBox4 = "" Or WunschterminBox5 = "" _
Or SonstigeBemerkungenBox6 = "" Or OptionButton1 = False Then
    MsgBox "Bitte Vermessungsauftrag vollständig ausfüllen"
Else

    With Worksheets("Tabelle der Aufträge")
        loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Row
        .Cells(loLetzte, 3) = CDate(Me.DatumBox1)
        .Cells(loLetzte, 4) = Me.ArtikelnummerBox1
        .Cells(loLetzte, 5) = Me.ArtderTeileBox1
        .Cells(loLetzte, 6) = Me.ArtderVermessungBox2
        .Cells(loLetzte, 7) = Me.MaschinennummerBox1
        .Cells(loLetzte, 8) = CLng(Me.AnzahlBox2)
        .Cells(loLetzte, 9) = Me.AuftraggeberBox3
        .Cells(loLetzte, 10) = Me.weitereAnsprechpartnerBox4
        .Cells(loLetzte, 11) = CDate(Me.WunschterminBox5)
        .Cells(loLetzte, 12) = Me.SonstigeBemerkungenBox6
        .Range("a1").Select
    End With

    UserForm1.Hide

End If

End Sub
Gruß Werner


  

Betrifft: AW: Tabelle mit CommandButton automatisch Sperren von: Patrick
Geschrieben am: 14.03.2018 09:56:39

Guten Morgen Werner,

danke für die Tipps hab ich fast 1:1 so übernommen.
Einzige Änderung die ich gemacht habe war statt ".Cells(loLetzte, 3) = CDate(Me.DatumBox1" auf .Cells(loLetzte, 3) = Me.DatumBox1 zu ändern da er mir das Datum immer in Amerikanischer schreibweise gemacht hat.
Ich Vermute das liegt aber an der Formatierung des Blattes. Ich werd das später mal testen ob ich die Formatierung einfach auf Datum stellen muss.

Danke fir auf jedenfall schon mal für die verbesserungen :)


  

Betrifft: Gerne u. Danke für die Rückmeldung... von: Werner
Geschrieben am: 14.03.2018 10:17:46

Hallo Patrick,

du mußt nur vorher die entsprechenden Spalten im erforderlichen Datumsformat formatieren.

Gruß Werner


Beiträge aus dem Excel-Forum zum Thema "Tabelle mit CommandButton automatisch Sperren"