(VBA) If-Abfragen-Problem
#11
Hallöchen,

der Fehler kommt wegen des Blattschutzes. Wenn Du Zeilen löschen willst, musst Du ihn vorher noch aufheben und am Ende wieder setzen..
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#12
@schauan,

das ist ein extrem guter Hinweis, dass ich da noch dran denken muss - allerdings ist hier kein Blattschutz aktiviert.

@schauan

Auch hier kommt der Delete-Methode des Rangeobjekts ... -Fehler :(
Top
#13
Hallöchen,

die gepostete Fehlermeldung ist aber ok?
Zitat:Die Delete-Methode des Rangeobjekts konnte nicht ausgeführt werden

Die deutet m.E. darauf hin, dass das Rangeobjekt zwar vorhanden ist, aber nicht darauf zugegriffen werden kann.  
Wenn nichts gefunden wird, kommt 'ne andere Meldung.

Klappt es denn mit Uwe's Code? Ich nehme an, mit dem zweiten @ meinst Du Uwe und nicht mich und es klappt nicht?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#14
Hallöchen,

ich nochmal. Es könnte auch sein, Du hast da eine Tabelle definiert und in der Zeile ist die Überschrift. Dann kommt auch so eine Meldung.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • EasY
Top
#15
Hi schauan,

hopla, genau ich meinte Uwe. Wenn ich mit F8 den Code nacheinander durchgehe, hängt es auch bei seinem Code einzig an dem Löschen des Urlaubswunsches und er spuckt mir den Delete-Methode ... - Fehler aus.


Ich bin wirklich am verzweifeln. Bislang habe ich alles, was ich geplant habe, irgendwie nach einer Zeit hinbekommen - an dem Problem hänge ich aber nun schon so lange :( ....
Ich habe jetzt eine Testdatei angehängt, in der alle sensiblen Daten gelöscht sein dürften. Auch schön ist es (noch) nicht. Vielleicht hilft es, einen Blick in die Datei zu werfen?


Angehängte Dateien
.xlsm   20180826_Urlaubskalender_fuer_Forum.xlsm (Größe: 115,68 KB / Downloads: 3)
Top
#16
Zitat:Geschrieben von schauan - 26.08.2018, 10:55 Hallöchen,

ich nochmal. Es könnte auch sein, Du hast da eine Tabelle definiert und in der Zeile ist die Überschrift. Dann kommt auch so eine Meldung.

Deswegen habe ich den Befehl des Löschens auch erst ab A2 bis last gesetzt. Oder reicht das so nicht? :/

P.S.: Bitte verteufelt mich nicht bzw lacht mich nicht aus - das ist mein erstes VBA-Projekt und die Codes sind sicher alles andere als aufgeräumt und strukturiert ... ABER: Sie funktionieren, bis auf die eine Ausnahme.
Top
#17
Die Variable Finden und Finden2 ="" desswegen der Fehler

das musst du abfangen mit " if finden is nothing or finden2 is nothing then exit sub"

des weiteren kannst du Zeilen, die nicht zusammenhängen, nicht auf einmal löschen! Das muss mit einer Schleife passieren!

wie in meinem Beitrag #8


Code:
Sub Wunschloeschen3()

Dim finden As Range
Dim finden2 As Range
Dim Frage As Integer
Dim last As Long
Dim i As Integer
last = ThisWorkbook.Sheets("Urlaubswuensche").Cells(Rows.Count, 1).End(xlUp).Row
Set finden = ThisWorkbook.Sheets("Mitarbeiter").Range("A2:A50").Find(what:="Hans", lookat:=xlWhole)
Set finden2 = ThisWorkbook.Sheets("Urlaubswuensche").Range("A1:A" & last).Find(what:="Hans", lookat:=xlWhole)
Frage = MsgBox("Der folgende Mitarbeiter und alle seine Urlaubsw?nsche werden unwiderruflich gel?scht: " + Chr(13) + Chr(13), vbOKCancel + vbExclamation, "Mitarbeiter l?schen?")

If finden Is Nothing And finden2 Is Nothing Then Exit Sub

Select Case Frage
   Case vbOK And finden2 Is Nothing
       
       ThisWorkbook.Sheets("Mitarbeiter").Rows(finden.Row).Delete shift:=xlUp
       Unload UserForm_Mitarbeiter_entfernen
   Case vbOK
       'ThisWorkbook.Sheets("Mitarbeiter").Rows(finden.Row).Delete shift:=xlUp
       ThisWorkbook.Sheets("Urlaubswuensche").Range("A1").AutoFilter field:=1, Criteria1:="Hans"
       
       For i = last To 2 Step -1
       If ThisWorkbook.Sheets("Urlaubswuensche").Rows(i).Hidden = False Then
       ThisWorkbook.Sheets("Urlaubswuensche").Rows(i).Delete
       End If
       Next
       
       ThisWorkbook.Sheets("Urlaubswuensche").Range("A1").AutoFilter
       Unload UserForm_Mitarbeiter_entfernen
End Select

End Sub

so klappts!
[-] Folgende(r) 1 Nutzer sagt Danke an Frogger1986 für diesen Beitrag:
  • EasY
Top
#18
@schauan

In meiner Variante mit der select case-variante (dürfte auch noch in dem Code der Datei vorhanden aber ausgeklammert sein) habe ich die Abfrage mit "finden2 is nothing" drin. Die Verzweigung läuft er auch richtig ab.
P.S.: Ich sehe gerade, du hast in den Modulen geschaut. Ich habe das Testmodul zum Testen angelegt, der richtige Code wird später dann in die Userform_Mitarbeiter_Loeschen eingebettet. Da steht der Code dann auch drin :)

Ah nein das gibt es ja nicht ... also nicht zusammenhängende kann man nicht löschen? SO einfach ist die Lösung? Danke :)

Ich werde dann mal deine Variante versuchen.
Top
#19
Hallo EasY,

ersetze die Zeile
          .Range("A2:A" & last).SpecialCells(xlVisible).EntireRow.Delete shift:=xlUp
durch
          .Range("A2:A" & last).EntireRow.Delete shift:=xlUp
Gruß Uwe
[-] Folgende(r) 2 Nutzer sagen Danke an Kuwer für diesen Beitrag:
  • EasY, Frogger1986
Top
#20
KUWER,

es funktioniert? WOW ... und ich dachte immer, dass genau dafür die Specialcells sind :). Ich teste dann weiter - für mich ist das erst einmal erledigt und ich bedanke mich bei euch allen mit einem riesen Der-Sonntag-ist-gerettet-Lächeln im Gesicht
Top


Gehe zu:


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