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:
[
attachment=18166]
Was mache ich falsch?
Hallo Ralf,
die Variable ist zu dem Zeitpunkt gefüllt und nicht Nothing? Und das Tabellenblatt ist nicht geschützt?
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?
(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
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.
[
attachment=18169]
Gruß Ralf
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.
Ä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
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.)
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
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.