Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.06.2018, 10:49
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 10:50 von Rabe.)
Hi,
mit folgendem Code möchte ich eine Datensatzzeile löschen:
Sub Loeschen() 'Datensatz löschen
If MsgBox("FGGK " & frm_UserForm1.Controls("TextBox" & 1).Value & " wirklich löschen?", vbYesNo) = vbYes Then
suchErgebnis.EntireRow.Delete
End If
Call Controls_Urzustand1
End Sub
Die Variable "suchErgebnis" ist eine globale Range-Variable, die vorher im Such-Modul gefüllt wird.
Bei Aufruf des Makros kommt folgende Fehlermeldung in der Delete-Zeile:
Was mache ich falsch?
Registriert seit: 11.04.2014
Version(en): Office 2007
12.06.2018, 10:52
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 10:52 von Steffl.
Bearbeitungsgrund: Text um eien Frage ergänzt
)
Hallo Ralf,
die Variable ist zu dem Zeitpunkt gefüllt und nicht Nothing? Und das Tabellenblatt ist nicht geschützt?
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.06.2018, 12:54
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 12:54 von Rabe.)
Hi Stefan,
ja, sie ist gefüllt.
Das Tabellenblatt ist zwar geschützt, aber diese Zeilen sind frei.
So, nochmal nachgeschaut:
- die Variable ist zwar gefüllt, aber mit dem Inhalt der gefundenen Zelle. Mit "MsgBox suchErgebnis.Row" wird dann die Zeilennummer gezeigt.
- Die Daten in der Tabelle sind als intelligente Tabelle formatiert.
Was erwartet denn das obige Makro als Variablenwert (suchErgebnis) für diese Zeile:
suchErgebnis.EntireRow.Delete
oder wie könnte ich das sonst lös(ch)en?
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
(12.06.2018, 12:54)Rabe schrieb: Was erwartet denn das obige Makro als Variablenwert (suchErgebnis)?
Moin Ralf!
Ein Range-Objekt.
Aber dies scheint ja (siehe die Threaderöffnung) korrekt übergeben worden zu sein.
Ich befürchte, dass eine zielgerichtete Hilfe ohne Beispieldatei nicht möglich ist.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Ich habe es mal nachgestellt.
Der "Sperrzustand" der Zeile ist unerheblich!
Damit gelöscht werden kann, musst Du explizit im Blattschutz das Löschen von Zeilen erlauben oder schlicht den Schutz switchen.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 29.09.2015
Version(en): 2030,5
12.06.2018, 13:10
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 13:10 von snb.)
Sub Loeschen()
If MsgBox("FGGK " & TextBox1 & " löschen?") = vbYes Then sheet1.cells.find(Textbox1,,,1).entirerow.delete
Controls_Urzustand1
End Sub
Call ist überflüssig.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
12.06.2018, 13:14
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 13:15 von RPP63.)
Ändert aber nix am Lösch-Problem im geschützten Blatt, snb!
(siehe meinen letzten Beitrag)
Edit:
Du hast schon Excel 2020? :19:
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.06.2018, 13:18
(Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2018, 13:18 von Rabe.)
Hi,
ich habe das Löschen nun erlaubt
und der Blattschutz wurde auch vorher schon beim Aufruf der Userform (und damit vor dem Suchen) aufgehoben.
Vorgehen:
- Aufruf Userform, Entsperren des Blattes
- Auswahl der Zeile, Button Suchen
- Button "löschen" ruft das Makro auf
- Nachfrage "löschen ja/nein"
- Anzeige Löschzeilen-Nr.
- Fehlermeldung (s.o.)
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
und so?
Code:
Sub Loeschen() 'Datensatz löschen
If MsgBox("FGGK " & frm_UserForm1.Controls("TextBox" & 1).Value & " wirklich löschen?", vbYesNo) = vbYes Then
Rows(suchErgebnis.Row).Delete
End If
Call Controls_Urzustand1
End Sub
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi snb,
(12.06.2018, 13:10)snb schrieb: If MsgBox("FGGK " & TextBox1 & " löschen?") = vbYes Then sheet1.cells.find(Textbox1,,,1).entirerow.delete
da wird nun der Inhalt der Userboxen gelöscht, aber die Zeile in der intelligenten Tabelle ist trotzdem noch vorhanden.