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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige