Registriert seit: 03.05.2016
Version(en): 2013
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
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
11.10.2018, 15:59
(Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2018, 15:59 von MisterBurns.)
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
Registriert seit: 03.05.2016
Version(en): 2013
Ich Danke Dir vielmals! :)
Alles wunderbar.
Registriert seit: 03.05.2016
Version(en): 2013
12.10.2018, 09:16
(Dieser Beitrag wurde zuletzt bearbeitet: 12.10.2018, 09:21 von Mounzer.)
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
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.10.2018, 09:26
(Dieser Beitrag wurde zuletzt bearbeitet: 12.10.2018, 09:27 von Rabe.)
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:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• Mounzer
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
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 RangeIf 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 IfEnd WithEnd SubDu siehst, es gibt 2 If-Anweisungen, aber nur 1 End If. ErgoCode:
.Protect Password:="1"
End If
End If
End With
Schöne Grüße
Berni
Registriert seit: 03.05.2016
Version(en): 2013
(12.10.2018, 09: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!