Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For.. If.. Next..

Forumthread: For.. If.. Next..

For.. If.. Next..
20.05.2007 00:33:34
Roger
Hallo Zusammen,
völlig verzweifelt wende ich mich an Euch.
Ich bin überzeugt das es ganz einfach ist aber ich komme nicht darauf.
Ich möchte die Zellen in Bereich D1:D20 fragen, ob ihr aktueller Wert eine O ist.
Wenn das Zutrifft muss in der gleichen Zeile in der Spalte A ein X und in Spalte B ein Y geschrieben werden, egal ob die Zellen schon beschrieben sind oder nicht.
Anschliessend muss das O in der gleichen Zeile durch ein P ersetzt werden.
Dann geht es weiter mit nächsten Zeile.
Hier mein Code:

Sub X_Y__P()
Dim i As Long
Dim Anz As Long
Dim Zelle As Range
Set Zelle = Range("D1")
Anz = 20
For i = 1 To Anz
If Zelle.Offset(i, 0).Value = "O" Then Range("A" & i) = "X"
If Zelle.Offset(i, 0).Value = "O" Then Range("B" & i) = "Y"
If Zelle.Offset(i, 0).Value = "O" Then Range("D" & i) = "P"
Next
End Sub


Da ich Anfänger bin, weiss ich nicht ob das Grundsätzlich der richtige Ansatz ist.
Der Code funktioniert soweit bis auf die Tatsache dass das letzte O unberührt bleibt :O(
Deshalb wäre ich dankbar wenn mich da ein Profi unter die Armen greifen kann.
Gruss Roger

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
For i = 0 To Anz - 1 (Offset!!!) - Gruß owT
20.05.2007 00:51:00
Luc:-?
:-?

AW: For i = 0 To Anz - 1 (Offset!!!) - Gruß owT
20.05.2007 00:52:00
Daniel
Hi
glaubst du, das den Hinweis ein Anfänger versteht?
Gruß, Daniel

AW: For.. If.. Next..
20.05.2007 00:51:18
Daniel
Hallo
der Grundsatzfehler ist, daß du in der IF-Abfrage in einer anderen Zeile bist als im THEN-Bereich.
beim ersten Schleifendurchlauf (i=1) ist:
- Zelle.Offset(i,0) in Zeile 2 (Zelle ist ja D1, eins weiter nach unten ist D2)
- Range("A"&i) in Zeile 1
für deinen Code würde auch eine If-Abfrage reichen, du brauchst nicht für jede Zeile eine eigene
ein optimierter Code würde dann so aussehen:

Sub X_Y__P()
Dim i As Long
Dim Anz As Long
Anz = 20
For i = 1 To Anz
If Cells(i,4) ="O" then
Cells(i,1).value = "X"
Cells(i,2).value = "Y"
Cells(i,4).value = "O"
End if
Next
End Sub


oder so:


Sub X_Y__P()
Dim i As Long
Dim Anz As Long
Dim Zelle As Range
Anz = 20
For Each Zelle in Range("D1:D" & Anz)
if Zelle.value ="O" then
Zelle.offset(0,-3).value ="X"
Zelle.offset(0,-2).value = "Y"
Zelle.value ="P"
end if
next
End Sub


gruß Daniel

Anzeige
AW: For.. If.. Next..
20.05.2007 01:05:21
Roger
Herzlichen Dank!
Nun habe ich 3 Versionen und wieder etwas dazu gelernt.
Wenn ich sehe das mit der Lösung Anz -1 das Problem behoben ist, war das mit dem Anfänger wohl nicht so falsch ;O)
Gruss Roger

Doch besser als Daniel dir zubilligen wollte! orT
20.05.2007 01:59:09
Luc:-?
Gruß Luc :-?)

OT: Schreibe ich, wenn ich doch etwas Text...
20.05.2007 02:39:00
Luc:-?
...folgen lasse wie zB einen Gruß, Christian,
...und der ist dann ja nicht wirklich relevant! ;-)
Mit nrG (nicht relevantem Gruß) ;-)
Luc :-?

AW: OT: Schreibe ich, wenn ich doch etwas Text...
20.05.2007 02:46:00
Christian
Hallo Luc:-?)
danke, für die Antwort, werde mal bei wikipedia eine Aktualisierung anregen ;-)
MfG Christian

Anzeige
AW: For.. If.. Next..
20.05.2007 02:50:00
Daniel
Nur damit alleine arbeitet dein Code aber noch nicht korrekt.
Gruß, Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige