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 (64 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 (64 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 (64 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.