Hallo Sapphire,
Die Select Anweisung selektiert halt IMMER den angegebenen Bereich bzw. die angegebene Zelle neu.
Wenn ich es richtig verstanden habe, geht es darum, ob der Wert in Spalte H in der Suchzeile < der Wert in Spalte H in Zeile 8 ist.
Wie wäre es, wenn du, falls das Kriterium erfüllt ist, einfach eine Markierung der Zeile in eine unbenutzte Spalte setzt und dann einfach über Filter- und Sortierfunktionen händisch die relevanten Daten rauskopierst?
Ansonsten kannst du dir bei der Micorosoft VBA-Hilfe mal die Funktionen Array anschauen.
Oder einfach:
Range("C" & i & ", E" & i & ", G" & i & ", I" & i).select
und vor dem Zeilensprung diese Daten kopieren (Copy-Funktion) und in eine temporäre Tabelle einfügen (Paste-Methode)
Diese Programmierung ist aber nicht sehr dynamisch und bei Änderungen der Tabellenstruktur kommen einige Änderungen auf dich zu.
Ich hoffe, ich konnte helfen.
Gruß,
Maddin
sapphire schrieb am 29.04.2007 16:23:06:
Hallo zusammen,
ich bin neu hier und VBA Anfänger. Da stellt sich mir natürlich direkt das erste Problem. Als erstes mal mein Quelltext:
Sub Schleife()
Dim i, e As Integer
e = 8
For i = 7 To 20
Cells(i, 8 ).Select
If ActiveCell.Value < Cells(e, 8 ) Then
Range(Cells(i, 3), Cells(i, 3)).Select
Range(Cells(i, 5), Cells(i, 5)).Select
Range(Cells(i, 7), Cells(i, 7)).Select
Range(Cells(i, 9), Cells(i, 9)).Select
e = e + 1
End If
Next i
End Sub
Ich durchsuche mit einer Schleife immer die gleiche Spalte, beginnend bei Zeile 7. Zeilenanzahl ist variabel, muß nicht 20 sein. Hier sollen immer zwei Werte verglichen werden und bei einhalten des Kriteriums "erste Zelle < zweite Zelle", die Bereiche "Range(..." markieren. Beim zweiten Durchlauf das selbe, jedoch wird die vorherige Markierung nicht beibehalten. Und genau dieser Befehl fehlt mir. Denn solange das Kriterium eingehalten wird, soll weiter verglichen und markiert werden. Dies dient zur späteren Verarbeitung innerhalb eines Diagrammes.
Vorab schonmal vielen Dank,
MfG, sapphire |