Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
704to708
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
704to708
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

For-Next-Schleife für Eingabe eines Suchwertes

For-Next-Schleife für Eingabe eines Suchwertes
05.12.2005 17:06:58
Airman
Hallo Forum und Profis,
ich habe folgendes Problem und denke, es ist keine zu große Schwierigkeit für Euch. Ich habe leider noch keinen Schimmer von VBA, aber vielleicht kann mir auch jemand eine gute Einstiegslektüre empfehlen.
Hier aber mein Problem, für welches ich sehr bald eine Lösung erhoffe.
Ein Makro soll nacheinander Werte aus den Zellen A1 bis Ai in die Zelle Q1 kopiere. Ist dies für einen Wert der Zellen A1 bis Ai geschehen, dann erfolgt eine Berechnung, dessen Wert in Zelle P2 (bzw. P3, P4,..., Pi) geschrieben wird. Die Zelle P2,..., Pi soll kopiert und in Zelle O2,..., Oi soll der nur der Wert eingefügt werden.
Frage: Wie mache ich das mit einer For-Next-Schleife, so dass ich mir den unteren Block spare und den Zähler beliebig hoch setzen kann?

Sub Schleife()
Range("Q1").Select
ActiveCell.FormulaR1C1 = "=R[1]C[-16]"
Range("P2").Select
Selection.Copy
Range("O2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks_
:=False, Transpose:=False
Range("Q1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[2]C[-16]"
Range("P3").Select
Selection.Copy
Range("O3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks_
:=False, Transpose:=False
End Sub

Vielen Dank schonmal und Grüße,
Airman

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Next-Schleife für Eingabe eines Suchwertes
05.12.2005 17:14:23
Reinhard
Hi Airman,
für was brauchst du O und P ?

Sub tt()
Dim zei As Long
For zei = 1 To Range("A65536").End(xlUp).Row
Range("O" & zei) = Berechnung(Range("A" & zei))
Next
End Sub


Function Berechnung(Wert As Range)
Berechnung = 4 * Wert.Value
End Function

Gruß
Reinhard
AW: For-Next-Schleife für Eingabe eines Suchwertes
05.12.2005 17:35:38
Airman
Hallo Reinhard,
vielen Dank für die schnelle Hilfe. In der Spalte P steht eine Formel, die sich auf Rechnungen im Spaltenraum Q bis R bezieht. Die Berechnung in Spalte P ist aber auch abhängig von z.B. dem Wert "A2". A2 ist gleichzeitig der Suchwert, welcher durch die For-Next-Schleife hochgezählt werden soll. In Spalte O steht im Grunde das gleiche wie in Spalte P, nur dass sich Spalte O dadurch ergebit, dass ich den Wert aus Spalte P kopiere und nur den Wert (also nicht die Formel) in Spalte O habe.
Vielleicht ist das angehängte Beispiel anschaulicher als meine Erklärungen...
https://www.herber.de/bbs/user/28978.xls
Hoffe, Du kannst mir helfen, da ich mit Deiner ersten Lösung nicht wirklich weiter gekommen bin.
Grüße,
Airman
Hinweis: Q1 ist Suchwert und entspricht A3
Anzeige
AW: For-Next-Schleife für Eingabe eines Suchwertes
05.12.2005 18:19:45
Klaus-Dieter
Hallo,
am besten wäre es sicher, du beschreibst mal, was du genau erreichen möchtest. Es gibt in Excel und VBA viele Möglichkeiten, die besser als eine Schleife sind. Nur ist es schwer, etwas vorzuschlagen, wenn man nicht weiß, was erreicht werden soll. Deine Beispieltabelle hat zumindest mir den Durchblick nicht verschafft.
Viele Grüße Klaus-Dieter

Online-Excel
AW: For-Next-Schleife für Eingabe eines Suchwertes
06.12.2005 07:37:38
Airman
Hallo Klaus Dieter,
vielen Dank für Deine Antwort. Ich versuche es nochmal präziser zu erklären.
In Spalte A befinden sich untereinander weg die Suchwerte, die nacheinander in die Zelle Q1 der Beispiel-Tabelle meiner vorherigen Antwort eingetragen werden.
Begonnen wird mit A2, d.h. in Q1 soll für den ersten Suchlauf nach dem Inhalt von A2 gesucht werden. Die Suchergebnisse dieses ersten Suchlaufs finde ich dann in Zelle P2 wieder. Dahinter steckt allerdings eine Formel. Ich brauche aber zur weiteren Verwendung nur den Wert. Also kopiere ich momentan von Hand den Wert aus P2 in O2.
Jetzt kommt der zweite Suchlauf. Jetzt soll in Q1 der Wert von A3 stehen. Das Suchergebnis finde ich dann wieder in P3 und kopiere die Werte in O3.
War das erfolgreiche verfahre ich weiter mit A4. Jetzt soll in Q1 der Wert von A4 stehen und das Erbenis der Suche dann in P4
...
Eine For-Next-Schleife soll also nacheinander die Werte aus A2, A3, A4 in Q1 kopieren und die Sucheregbnisse aus P2, P3, P4 nach jeder Suche in O2, O3, O4 als Werte kopieren.
Vielleicht ist eine For-Next-Schleife nicht die beste Lösung, aber ich brauche irgendeinen Zähler der hochzählt, da in Spalte A bis zu 500 Werte stehen können.
Hoffe, ich habe es jetzt besser erklärt und ihr könnt mir weiter helfen.
Viele Grüße und nochmals Dank,
Airman
Anzeige
Leider noch keine Lösung für "For-Next-Schleife"-
06.12.2005 10:55:25
Airman
Hallo Forum,
für obiges Problem habe ich leider immer noch keine Lösung gefunden. Hat jemand von Euch noch eine Idee.
Bin dankbar für jede Form der Hilfe.
Viele Grüße und besten Dank im Voruas,
Airman
AW: Leider noch keine Lösung für "For-Next-Schleife"-
06.12.2005 11:58:23
Klaus-Dieter
Hallo,
das was die Schleife machen soll, habe ich schon verstanden. Nur der Sinn hat sich für mich nicht erschlossen. Aus welchem Grund soll der Suchwert aus Spalte A temporär in die Zelle Q1 geschrieben werden? Warum willst du die in Spalte P, durch eine Formel errechneten Werte, nach Spalte O kopieren (ohne Formel)? Excel ist doch durchaus in der Lage, auch mit Werten, die von einer Formel errechnet wurden, weiter zu arbeiten.
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Leider noch keine Lösung für "For-Next-Schleife"-
06.12.2005 12:17:09
Airman
Hallo Klaus Dieter,
Danke für Antwort. Mittlerweile habe ich den Kopiermechanismus von "Spalte P" nach "Spalte O" bzw. inzwischen von "Spalte W" nach "Spalte V" für meine Bedürfnisse im Griff. Der Sinn dieser "Rumkopiererei" liegt darin, dass ich den Wert, der letztlich in Spalte "o" bzw. "V" steht für ein anderes Programm benötige, welches die Excel-Formeln nicht akzeptiert.
Nachfolgend - für VBA-profis sicher ein Graus - mal mein Makro. Schwierigkeiten habe ich noch mit der Passage, in der die Zellinhalte aus Ai Schritt für Schritt X1 zugeordnet werden können, da ich nicht genau weiß, was hinter "ActiveCell.FormulaR1C1 steckt. Hast Du da vielleicht eine gute Idee? Wäre auf jeden Fall sehr hilfreic für mich.
Sub Dependencies()
'For Schleife
Dim I As Long
For I = 1 To 249
'Zellinhalt aus Ai der Zelle X1 zuweisen
Range("X1").Select
ActiveCell.FormulaR1C1 = "=R[1]C[-23]"
'Inhalte, die als Werte eingefügt werden sollen kopieren
Range("W" & I).Select
Selection.Copy
'Inhalte als Werte einfügen
Range("V" & I).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next I
Vielen Dank und Grüße,
Airman
Anzeige
AW: Leider noch keine Lösung für "For-Next-Schleife"-
06.12.2005 18:42:19
Reinhard
Hi Airman,
markiere mal Zelle Z1 und lass dann
Sub ttt()
ActiveCell.FormulaR1C1 = "=R[1]C[-23]"
End Sub
laufen, du erkennst dann dass bezogen auf die aktive Zelle der Zellenwert eine (1) Reihe tiefer und 23 Spalten links davon geholt wird. In Z1 siehst du dann die absolute Adresse.
Ich mag R1C1 überhaupt nicht. Ich würde
Sub ttt()
ActiveCell.Formulalocal = "=C2"
End Sub
Liest sich flüssiger *find*
Sub Dependencies()
'For Schleife
Dim I As Long
For I = 1 To 249
'Zellinhalt aus Ai der Zelle X1 zuweisen
Range("X1").FormulaR1C1 = "=C2" 'Prüfen ob C2 stimmt, habe das nur geschätzt
'Inhalte, die als Werte eingefügt werden sollen kopieren
Range("W" & I).Copy
'Inhalte als Werte einfügen
Range("V" & I).Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next I
End Sub

Tipp: Der _ ist das Zeilenumbruchzeichen wenn da die zweite Zeile grün markiert ist ging das wichtige Leerzeichen NACH dem _ flöten.
Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen
Anzeige
Rückmeldung ;-) und Danke
07.12.2005 08:11:59
Airman
Hallo Reinhard,
danke für die hilfreichen Tips. Hatte in der Antwort an Daniel (siehe Forum) bereits meine gefundene Lösung ins Forum geschrieben. In jedem Falle funktioniert es jetzt so, wie ich es brauche.
Danke und Grüße,
Airman
AW: For-Next-Schleife für Eingabe eines Suchwertes
06.12.2005 12:59:09
Daniel
Hallo Airman,
ich weiss nicht sicher ob ich dich richtig verstanden habe. Ich hab trotzdem mal eine Schleife geschrieben:

Sub Schleife()
Dim i As Integer
For i = 2 To 20
Range("A" & i - 1).Select
Selection.Copy
Range("Q1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.FormulaR1C1 = "=R[i]C[-16]"
Range("P" & i).Select
Selection.Copy
Range("O" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next
End Sub

Ich hoffe der Ansatz hilft dir weiter
Anzeige
AW: For-Next-Schleife für Eingabe eines Suchwertes
06.12.2005 13:28:53
Airman
Hallo Daniel,
vielen Dank für Dein Makro. In derr Zwischenzeit hatte ich auch noch einige Versuche gestartet, aber noch ist keine funktionierende Lösung gefunden.
Wenn ich Dein Makro ausführe, dann kommt folgende Fehlermeldung:
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler
Beim Debuggen wird angezeigt, dass der Fehler in folgender Zeile liegt:
ActiveCell.FormulaR1C1 = "=R[i]C[-16]"
Weißt Du, wie dieses Problem zu beheben ist?
Vielen Dank nochmal und Grüße,
Airman
AW: For-Next-Schleife für Eingabe eines Suchwertes
06.12.2005 14:10:08
Airman
Hallo Daniel, hallo Klaus Dieter, hallo Forum,
nachdem ich Eure Hilfe und Zeit in Anspruch genommen habe, möchte ich mich noch einmal bedanken und nachfolgend die von mir durch Eure Anregungen entwickelte Lösung anfügen.
Vielleicht habe ich mich anfangs nicht klar genug ausgedrückt, aber jetzt funktioniert es so, wie ich es brauche.
Lösung:

Sub Schleife()
'For Schleife
Dim i As Long
For i = 1 To 249
'Zellinhalt aus Ai der Zelle X1 zuweisen
Range("X1").Select
ActiveCell.FormulaR1C1 = Range("A" & i)
'Inhalte, die als Werte eingefügt werden sollen kopieren
Range("W" & i).Select
Selection.Copy
'Inhalte als Werte einfügen
Range("V" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
End Sub

Grüße,
Airman
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige