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
#11
Hi Stefan,

mit Deiner vorgeschlagenen Zeile kommt auch wieder:

"Die Delete-Methode des Range-Objektes konnte nicht ausgeführt werden."
Antworten Top
#12
@Stefan!
Puuuh! Gefährlich, was Du da vorschlägst!
So von wegen ActiveSheet und so …

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
#13
@Ralf:
Ich hab Dir Deine PN beantwortet.
Vielleicht ist es ja wirklich am sinnvollsten, dass Du mir die Datei schickst.

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
#14
Hi,

Zitat:- Die Daten in der Tabelle sind als intelligente Tabelle formatiert.


CodeNameSheet.ListObjects("Name_der_Liste").ListRows(suchErgebnis.Row).Delete

Wobei Blattname und Listenname natürlich angepasst werden sollten.

Und bei dem Blattschutz gibt es den Parameter UserInterfaceOnly
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • Rabe
Antworten Top
#15
Soderle!
Ich habe mir die Datei angesehen.
Loeschen sieht jetzt so aus und funktioniert problemlos.
(Ich schrieb aber ja auch vom Switchen des Blattschutzes)
Sub Loeschen()    'Datensatz löschen 
   If MsgBox("FGGK: " & frm_UserForm1.Controls("TextBox" & 1).Value & " wirklich löschen?", vbYesNo) = vbYes Then
      MsgBox suchErgebnis.Row
      Tabelle1.Unprotect
      suchErgebnis.EntireRow.Delete
      Tabelle1.Protect
   End If
   
   Call Controls_Urzustand1
End Sub

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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Rabe
Antworten Top
#16
Ohne Datei bleibt's nur Raterei.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#17
HI,

Zitat:Ich schrieb aber ja auch vom Switchen des Blattschutzes
Warum switchen?
Ich verstehe einfach nicht warum aufmachen und zumachen!?
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#18
Du hast natürlich Recht, dass man dies auch im WB_Open() oder im UF_Initialize() mit dem Parameter UserInterfaceOnly:= regeln kann.
Aber ist im Prinzip Jacke wie Hose … Wink
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
#19
hi,

nun habe ich die Lösung:
in dem Löschen-Makro muß nochmal direkt der Blattschutz ausgeschaltet werden.

Dann hat es mit diesem Code funktioniert:
Code:
Sub Loeschen()    'Datensatz löschen
 
  Sheets("Stammdaten").Unprotect
  If MsgBox("FGGK: " & frm_UserForm1.Controls("TextBox" & 1).Value & " wirklich löschen?", vbYesNo) = vbYes Then
     'MsgBox suchErgebnis.Row
     Sheets("Stammdaten").ListObjects("Tabelle3").ListRows(suchErgebnis.Row - 6).Delete
  End If
  Sheets("Stammdaten").Protect AllowDeletingRows:=True
 
  Call Controls_Urzustand1
End Sub
-6, weil da die Zeilen-Nummer der intelligenten Tabelle genommen wird und nicht die Blattzeile.
Die anderen vorgeschlagenen Code-Zeilen habe ich jetzt nicht mehr getestet.


Bei diesem Code
Code:
  Sheets("Stammdaten").Unprotect
  frm_UserForm1.Show
  Sheets("Stammdaten").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowDeletingRows:=True
wird also nicht der Blattschutz aufgehoben, bis die Userform geschlossen wird, sondern nur so lange, bis das Userform-CodeModul verlassen wird. Wenn die Löschen-Sub also in einem allgemeinen Modul steht, dann ist der Blattschutz schon wieder aktiv.

PS: da das Tool für einen VBA-Anfänger entwickelt wurde, wird überall "Call" und ".Value" verwendet.
Antworten Top
#20
Hi,

^^
Zitat:Aber ist im Prinzip Jacke wie Hose … [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
nöö,

Warum ich der Meinung bin:
  • Viele Anwender haben ein Problem wo Sie nun auf und zumachen sollten.
  • Bleibt der Code jetzt zwischen unprotect und Protect hängen, ist das Blatt nicht geschützt und ist ggf. einer Herde von Dau's ausgeliefert.
  • Es ist zumeist kürzer, da ja zumeist PW und andere Parameter auch noch übergeben werden.
  • Mir bislang kein Nachteil eingefallen ist.

lg
Chris
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top


Gehe zu:


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