Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

If - Frage reagiert nicht

If - Frage reagiert nicht
02.10.2018 20:45:27
Hendrik
Hallo zusammen,
ich stehe mal wieder total auf dem Schlauch.
Ich habe in Spalte A mehrmals den Text "Pos.".
Durch folgenden Code sollte eigentlich die Zeile gelöscht werden. Jedoch wird die Zelle in der "Pos." steht nicht erkannt.
Sub pos
for i = i to 500
with Worksheets("Table 1")
If Range("A"&i) = "Pos." then .Rows(i).Delete
End With
Next
End 

Sub


		

37
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If - Frage reagiert nicht
02.10.2018 21:06:06
Werner
Hallo Hendrik,
ich zweifel mal an, dass der Code überhaupt läuft.
Sub pos
for i = i to 500
With Worksheets("Table 1")
If Range("A"&i) = "Pos." then .Rows(i).Delete
End With
Next
End Sub 
Der Variablen i wurde kein wert zugewiesen, also ist sie am Anfang null. Eine Zelle A0 gibt es nicht genau so wenig wie eine Zeile 0 (Rows(i))
Dann hast du ein With - End With aber vor Range fehlt der Punkt.
Und eine Schleife zum Löschen immer von hinten nach vorne.
Sub pos
Dim i AS Long
With Worksheets("Table 1")
For i = 500 to 1 Step - 1
If .Range("A"&i) = "Pos." then .Rows(i).Delete
Next i
End With
End Sub 
Gruß Werner
Anzeige
AW: If - Frage reagiert nicht
03.10.2018 10:01:43
Ludwig
Moin Werner, du hast im Code das End If vergessen, wenn ich es richtig sehe. Sonst funktioniert alles, Top!
AW: If - Frage reagiert nicht
03.10.2018 10:05:44
Werner
Hallo Ludwig,
nein, habe ich nicht. Die Then Anweisung steht in der gleichen Codezeile wie die If Anweisung - damit ist das als "Einzeiler" abgeschlossen und braucht kein End If.
Gruß Werner
AW: If - Frage reagiert nicht
03.10.2018 09:46:46
Ludwig
Die For-Schleife muss auf jeden Fall unter der With-Anweisung stehen.
müssen muss sie nicht. o.w.T.
03.10.2018 09:54:03
Werner
AW: müssen muss sie nicht. o.w.T.
03.10.2018 10:43:33
Ludwig
Auch auf die Gefahr hin, dass ich etwas falsch verstanden habe. Aber habs nochmal probiert und wenn die For-Schleife über der With-Anweisung steht, erscheint als Fehlermeldung: Next ohne For.
AW: müssen muss sie nicht. o.w.T.
03.10.2018 10:47:06
Hajo_Zi
ja das end With steht nicht nach Next.
Die Punkte hast Du ja schon ergänzt.
Gruß Hajo
Anzeige
AW: müssen muss sie nicht. o.w.T.
03.10.2018 10:51:12
Ludwig
Ok jetzt hab ichs gecheckt!
Nö.
03.10.2018 10:50:09
Werner
Hallo Ludwig,
Sub pos()
Dim i As Long
Application.ScreenUpdating = False
For i = 500 To 1 Step -1
With Worksheets("Table 1")
If .Range("A" & i) = "Pos." Then .Rows(i).Delete
End With
Next i
Application.ScreenUpdating = True
End Sub
Wobei schon klar ist, dass das Unsinn ist. Die Codezeile der With - End With Anweisung müssen so im schlechtesten Fall 500 mal ausgeführt werden.
Gruß Werner
Application.ScreenUpdating = True ist unnötig
03.10.2018 11:04:13
Matthias
Hallo Werner
Application.ScreenUpdating = True,
wird nach Prozedurausführung automatisch wieder auf True gesetzt.
Gruß Matthias
Anzeige
AW: Application.ScreenUpdating = True ist unnötig
03.10.2018 11:26:39
Luschi
Hallo Matthias,
das stimmt so nicht ganz, siehe hier:

Sub machMal()
Debug.Print 1, Application.ScreenUpdating   'True
Call Mal1
Debug.Print 2, Application.ScreenUpdating   'False
Call Mal2
Debug.Print 4, Application.ScreenUpdating   'False
End Sub
Sub Mal1()
Application.ScreenUpdating = False
End Sub
Sub Mal2()
Debug.Print 3, Application.ScreenUpdating   'False
End Sub
Wenn also im Programmteil 'Mal1' die Property abgeschalten wird, dann bleibt sie das auch, bis 'MachMal' beendet wurde.
Gruß von Luschi
aus klein-Paris
Doch, das stimmt ...
03.10.2018 11:49:40
Matthias
Hallo Luschi
Option Explicit
Sub machMal()
MsgBox Application.ScreenUpdating
Mal1
MsgBox Application.ScreenUpdating
Mal2
MsgBox Application.ScreenUpdating
End Sub
Sub Mal1()
Application.ScreenUpdating = False
End Sub
Sub Mal2()
Application.ScreenUpdating = False
End Sub
Bei erneuter Ausführung von Sub machMal() ist ScreenUpdating = True,
obwohl nicht explizit auf True zurückgesetzt.
Also: ScreenUpdating wird nach Prozedurausführung von machMal() automatisch wieder auf True gesetzt.
Kannst das auch gerne damit probieren
Sub Mal()
MsgBox Application.ScreenUpdating
Application.ScreenUpdating = False
MsgBox Application.ScreenUpdating
End Sub
Bei jedem neuen Aufruf der Prozedur ist ScreenUpdating=True
Bitte Version beachten, mE ist das schon seit XL2007 so.
Gruß Matthias
Anzeige
Das Application.ScreenUpdating
03.10.2018 12:54:45
Daniel
wird immer dann automatisch auf TRUE gesetzt, wenn der Anwender die Kontrolle über Excel bekommt,
dh dann wenn alle anstehenden Makros durchgelaufen sind oder bei einer Unterbrechung des Makrolaufs (STOP, Fehlerabbruch, Haltepunkt). Wird nach einer Unterbrechung das Makro fortgesetzt (F5), so wird wieder der Zustand angenomen, der vor der Unterbrechung galt.
Gruß Daniel
auf Deinen Senf kann ich verzichten !!!!!!!!!
03.10.2018 14:00:25
Matthias
Solche Besserwisser und Selbstdarsteller wie Du, können mich kreuzweise.
Ich habe Dich nichts gefragt und werde dich auch NIE etwas fragen.
Wenn Du mich nicht endlich in Ruhe lässt, ergreife ich andere Maßnahmen!
Merks Dir endlich (daniel.seichter@....de)!
Die Punkte der Mailadresse kann ich auch ersetzen.
Also: LASS MICH ENDLICH IN FRIEDEN! Ich meine das ernst!!
Anzeige
ich sehe nicht, in wiefern ich deinen Frieden
03.10.2018 14:30:38
Daniel
gestört haben sollte.
kannst du mir das mal erklären, warum du mit so einem fachliche Beitrag ohne persönlichen Bezug auf irgendjemand, der einfach nur eine Antwort auf die im Raum stehende Frage gibt, so ein problem hast?
ja, auch wenn dich den Beitrag direkt an deinen gehängt habe (irgendwo muss ich hin ja anhängen) ist er doch an alle Mitleser gericht.
Also bleib mal locker, schließlich ist das hier ein öffentliches Forum, in dem jeder mitlesen kann und darf.
wie Du das siehst ist mir egal ... owT
03.10.2018 14:43:20
Matthias
außerdem solltest du bedenken,
03.10.2018 14:47:44
Daniel
dass es hier im Forum keine eindeutige Identifikation der Person gibt.
dh ich kann nicht wissen, ob du "der" "Michael L" bist oder nicht vielleicht irgendeine andere Person, die sich zufällig auch "Michael L" nennt und du kannst nicht wissen, ob ich "der" "Daniel" bin oder nicht vielleicht irgend eine andere Person, die sich auch "Daniel" nennt.
Anzeige
lass es sein Du Provokateur ... owT
03.10.2018 14:49:52
Matthias
AW: lass es sein Du Provokateur ... owT
03.10.2018 14:54:26
Daniel
worin besteht denn genau meine Provokation in meinem Beitrag?`
nur nur das verfassen eines Beitrags allein kann ja noch keine Provokation sein.
Du Provokateur ... ENDE
03.10.2018 15:09:04
Matthias
Häng Deine Beiträge sonstwo an, aber nicht an meine Beiträge
Ansonsten meinst Du mich persönlich.
Hast mich ja ne Weile in Ruhe gelassen, aber ab und zu brauchst Du das ja wohl doch.
Such Dir andere "Opfer"
-Ende-
dann entspann dich.
03.10.2018 15:12:57
Daniel
du persönlich bist mir egal.
dich zu provozieren wäre unnötige Zeitverschwendung.
na endlich, Du warst mir auch schon immer egal owT
03.10.2018 15:21:31
Matthias
AW: na endlich, Du warst mir auch schon immer egal owT
03.10.2018 15:33:09
Torsten
Oh Mann,
ich dachte ich bin hier im Herber's Excel Forum und nicht in Herber's Kindergarten
halt Dich raus wenn Du nicht weiß um was es geht!
03.10.2018 17:34:50
Matthias
oder schreib es auch an Daniel und nicht an mich.
Anzeige
das glaube ich dir nicht.
03.10.2018 18:17:32
Daniel
wenn ich dir egal wäre, würdest du meine Beiträge einfach igorieren.
und ich glaube DIR das nicht ...
03.10.2018 19:18:05
Matthias
Zitat
du persönlich bist mir egal.
Wenn ich Dir egal wäre, dann würdest Du meine Beiträge auch einfach igorieren.
Merkst Du wirklich nicht was Du für einen Blödsinn schreibst.
Du mischst Dich doch ein.
Halt Dich doch raus und alles ist ok.
Aber das kannst Du nicht. Weil Du ein Selbstdarsteller bist.
Dein eigenes "Ego" hast Du viel zu hoch gehängt.
Ich brauche Dich genauso wenig wie Du mich brauchst.
Der Unterschied: Ich mische nicht in Deine Beiträge ein.
der Unterschied ist:
03.10.2018 19:26:09
Daniel
ich hätte kein Problem damit, wenn du dich in in meine Beiträge mit einem thematisch passenden Inhalt einmischen würdest.
Warum auch? das ist ist ja schließlich der Sinn und zweck eines Forums und jeder hat das Recht, einen Beitrag zu schreiben.
Anzeige
Du hast ein anderes Problem ...
03.10.2018 19:53:11
Matthias
Respektiere endlich,
das ich mit Dir nicht kommunizieren will.
Du hast es 2017 nicht kapiert
Du hast es 2018 nicht kapiert
und Du wirst es 2019 auch nicht kapieren
AW: Du hast ein anderes Problem ...
03.10.2018 20:24:41
Daniel
Wenn du mit mir nicht kommunizieren willst, warum tust du es dann?
der einfachste Weg, so einer "Provokation" wie du es nennst aus dem Weg zu gehen, ist nicht darauf zu reagieren.
Wenn man das konsequent einhält, verlieren die meisten Provokateure relativ schnell die Lust, weil sie merken, dass sie mit ihren Provokationsversuchen nichts erreichen.
naja, aber Du bist halt krank ,,,
03.10.2018 21:08:11
Matthias
krank ist derjenige...
03.10.2018 21:24:57
Daniel
der sich von einem einfachen Beitrag schon verfolgt fühlt.
derjenige hat einen massiven Verfolgungswahn.
Anzeige
Zeit
03.10.2018 10:02:37
Hajo_Zi
diese Variante hat den Vorteil das Die Zeile With und End With nicht 500x ausgeführt wird, sondern mur 1x.

Gruß Hajo
AW: Zeit
03.10.2018 10:08:18
Werner
Hallo Hajo,
ich dachte du liest meine Beiträge nicht.
Ich habe ja auch nicht behauptet, dass das sinnvoll ist sondern nur festgestellt, dass die With Anweisung nicht aus der For Schleife raus muss
Wenn du dir meinen Code ansiehst, dann wirst du feststellen, dass sie dort außerhalb der For Schleife ist.
Gruß Werner
ohne VBA: Filtern - Zeilen markieren - löschen owT
03.10.2018 10:16:00
Matthias
AW: If - Frage reagiert nicht
05.10.2018 15:55:04
Hendrik
Vielen Dank. Die erste Antwort hat direkt das Rätsel gelöst :)
Gerne u. Danke für die Rückmeldung und..
05.10.2018 16:37:30
Werner
Hallo Hendrik,
..ein kleiner Hinweis.
Du machst dir keine Freunde wenn du hier Hilfe angeboten bekommst und nicht darauf reagierst.
Gruß Werner
AW: If - Frage reagiert nicht
05.10.2018 19:56:58
Gerd
Moin!
Sub Del_Pos()
Range("A1:A500").Replace "Pos.", True, xlWhole
On Error Resume Next
Range("A1:A500").SpecialCells(xlCellTypeConstants, xlLogical).EntireRow.Delete
On Error GoTo 0
End Sub

Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige