Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datensatz im Userform löschen
#21
Das funktioniert wunderbar!

Ich Danke Dir vielmals, jetzt nur noch eine Frage, dann lass ich dich in Ruhe. :)

Ich will nicht das die ganze Zeile gelöscht wird, da nämlich Formel in den jeweiligen Zellen hinterlegt sind.
Wie kann ich es veranlassen, das nur bestimmte Zellen gelöscht werden.

Als Beispiel die jeweiligen Zellen, indem die Bezeichnung aus Spalte B steckt (ComboBox18)?

Zelle B, X, Z, V
Antworten Top
#22
Das ginge dann so

Code:
      If Not Bereich Is Nothing Then
          .Unprotect Password:="DeinPasswort"
          Cells(Bereich.Row, "B").ClearContents
          Cells(Bereich.Row, "X").ClearContents
           'usw. usw.
          .Protect Password:="DeinPasswort"
      End If
Damit löschst du nicht die Zeile, sondern es wird nur der jeweilige Zellinhalt gelöscht.
Falls du zusammenhängende Bereiche löschen willst (also zB Zelle B, C, D, E und F) kannst du statt
Code:
Cells(Bereich.Row, "B").ClearContents
'usw. usw.
auch
Code:
Range("B" & Bereich.Row & ":F" & Bereich.Row).ClearContents
schreiben.


Und du brauchst mich nicht in Ruhe lassen, wenn du Fragen hast, dann frag.
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • Mounzer
Antworten Top
#23
Ich Danke Dir vielmals! :)

Alles wunderbar.
Antworten Top
#24
Dein Passwort
Einen kleinen Nachbrenner habe ich noch, hat eigentlich nicht direkt etwas mit dem Projekt zutun, sondern gehört bestimmt zu den Basic-Sachen, aber ich Stelle die Frage dennoch. :)

Bei mir kommt der Fehler "If-Block ohne End If"

Wenn ich diesen Code erstelle:

Private Sub CommandButton7_Click()
Dim Bereich As Range
If MsgBox("Soll der aktuelle Datensatz endgültig gelöscht werden?", vbYesNo) = vbYes Then
    With Sheets("Daten").Range("B:B")
        Set Bereich = .Find(Me.ComboBox18, LookIn:=xlValues)
        If Not Bereich Is Nothing Then
            .Unprotect Password:="Dein Passwort"
             Range("A" & Bereich.Row & ":G" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Range("I" & Bereich.Row & ":J" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Cells(Bereich.Row, "L").ClearContents
             Range("N" & Bereich.Row & ":HO" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Range("ID" & Bereich.Row & ":IV" & Bereich.Row).ClearContents ' Werte von von ID bis IV löschen
            .Protect Password:="Dein Passwort"
End If
End With
End Sub
Antworten Top
#25
Hi,

Du hast Deinen Code so schön und fast korrekt eingerückt.

Dabei siehst Du, daß die Schleifen eingerückt sind. Zu jedem If gehört ein End If in derselben Spalte. Zu jedem With ein End With.
Nun gibt es zwei If-Schleifen und nur ein End If, also solltest Du das zweite an der richtigen Stelle einfügen.

Hier ein Beispiel:
Option Explicit

Private Sub CommandButton7_Click()
   Dim Bereich As Range
   If MsgBox("Soll der aktuelle Datensatz endgültig gelöscht werden?", vbYesNo) = vbYes Then
      With Sheets("Daten").Range("B:B")
         Set Bereich = .Find(Me.ComboBox18, LookIn:=xlValues)
         If Not Bereich Is Nothing Then
            .Unprotect Password:="Dein Passwort"
            Range("A" & Bereich.Row & ":G" & Bereich.Row).ClearContents ' Werte von von A bis G löschen 
            Range("I" & Bereich.Row & ":J" & Bereich.Row).ClearContents ' Werte von von A bis G löschen 
            Cells(Bereich.Row, "L").ClearContents
            Range("N" & Bereich.Row & ":HO" & Bereich.Row).ClearContents ' Werte von von A bis G löschen 
            Range("ID" & Bereich.Row & ":IV" & Bereich.Row).ClearContents ' Werte von von ID bis IV löschen 
            .Protect Password:="Dein Passwort"
         End If
      End With
   End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Mounzer
Antworten Top
#26
If-Block ohne End If sagt aus, dass es eine If-Bedingung gibt, die nicht korrekt abgeschlossen wurde.

Private Sub CommandButton7_Click()
Dim Bereich As Range
If MsgBox("Soll der aktuelle Datensatz endgültig gelöscht werden?", vbYesNo) = vbYes Then
    With Sheets("Daten").Range("B:B")
        Set Bereich = .Find(Me.ComboBox18, LookIn:=xlValues)
        If Not Bereich Is Nothing Then
            .Unprotect Password:="1"
             Range("A" & Bereich.Row & ":G" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Range("I" & Bereich.Row & ":J" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Cells(Bereich.Row, "L").ClearContents
             Range("N" & Bereich.Row & ":HO" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
             Range("ID" & Bereich.Row & ":IV" & Bereich.Row).ClearContents ' Werte von von ID bis IV löschen
            .Protect Password:="1"
End If
End With
End Sub

Du siehst, es gibt 2 If-Anweisungen, aber nur 1 End If. Ergo

Code:
           .Protect Password:="1"
        End If
End If
End With
Schöne Grüße
Berni
Antworten Top
#27
(12.10.2018, 08:26)Rabe schrieb: Hi,

Du hast Deinen Code so schön und fast korrekt eingerückt.

Dabei siehst Du, daß die Schleifen eingerückt sind. Zu jedem If gehört ein End If in derselben Spalte. Zu jedem With ein End With.
Nun gibt es zwei If-Schleifen und nur ein End If, also solltest Du das zweite an der richtigen Stelle einfügen.

Hier ein Beispiel:
Option Explicit

Private Sub CommandButton7_Click()
  Dim Bereich As Range
  If MsgBox("Soll der aktuelle Datensatz endgültig gelöscht werden?", vbYesNo) = vbYes Then
     With Sheets("Daten").Range("B:B")
        Set Bereich = .Find(Me.ComboBox18, LookIn:=xlValues)
        If Not Bereich Is Nothing Then
           .Unprotect Password:="Dein Passwort"
           Range("A" & Bereich.Row & ":G" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
           Range("I" & Bereich.Row & ":J" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
           Cells(Bereich.Row, "L").ClearContents
           Range("N" & Bereich.Row & ":HO" & Bereich.Row).ClearContents ' Werte von von A bis G löschen
           Range("ID" & Bereich.Row & ":IV" & Bereich.Row).ClearContents ' Werte von von ID bis IV löschen
           .Protect Password:="Dein Passwort"
        End If
     End With
  End If
End Sub

Wunderbar, vielen, vielen Dank für die nette Erklärung. :) Schönes Wochenende!
Antworten Top


Gehe zu:


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