Clever-Excel-Forum

Normale Version: Datensatz im Userform löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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
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.
Ich Danke Dir vielmals! :)

Alles wunderbar.
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
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
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
(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!
Seiten: 1 2 3