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.

[VBA] Löschen eines Datensatzes
#1
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?
Antworten Top
#2
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
Antworten Top
#3
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?
Antworten Top
#4
(12.06.2018, 11: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)
Antworten Top
#5
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)
Antworten Top
#6
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.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Ä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)
Antworten Top
#8
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:
  1. Aufruf Userform, Entsperren des Blattes
  2. Auswahl der Zeile, Button Suchen
  3. Button "löschen" ruft das Makro auf
  4. Nachfrage "löschen ja/nein"
  5. Anzeige Löschzeilen-Nr.
  6. Fehlermeldung (s.o.)
Antworten Top
#9
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
Antworten Top
#10
Hi snb,

(12.06.2018, 12: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.
Antworten Top


Gehe zu:


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