Anzeige
Archiv - Navigation
868to872
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
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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 :-?

Anzeige
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

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

194 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige