VBA Listen filtern?

... komplette Frage anzeigen

4 Antworten

Dim i As Integer
  For i=2 To 4
    If Cells(i, 4) >= 3 Then Worksheets("Blatt1").Range("D" & i).Copy Destination:=Worksheets("Blatt1").Range("E" & i)
Next

(ungetestet)

Okey, so ist es noch nicht kürzer. ^^ Das lohnt sich erst, wenn mehrere Zeilen abgearbeitet werden sollen.

Antwort bewerten Vielen Dank für Deine Bewertung

Zusätzlich zu Schleife oder With geht anstatt

.Range("D2:D4")
diese Formulierung (ohne Gänsefüßchen!):
.[D2:D4]
Ging zumindest früher, aber: die [Klammer] wertet nicht aus, also Parameter darfst du so nicht verwenden: zB [Adressvariable] geht nicht
Antwort bewerten Vielen Dank für Deine Bewertung

Vielleicht etwas aufwendiger aber flexibler/ leichter anzupassen:

Sub testtest()
Dim rngCheck As Range
Dim Zelle As Range
Set rngCheck = Range("D2:D4")

With Worksheets("Blatt1")
For Each Zelle In rngCheck
If Zelle.Value >= 3 Then _
.Cells(Zelle.Row, Zelle.Column).Copy .Cells(Zelle.Row, Zelle.Column + 1)
Next Zelle
End With
End Sub

Voraussetzung ist allerdings, dass die Bereiche in beiden Blättern immer übereinstimmen. "D2:D4" und "Blatt1" kann hier leicht angepasst werden.

Hilft Dir das?

Antwort bewerten Vielen Dank für Deine Bewertung
If Cells(2, 4;3 ,4;4 ,4) >= 3 Then Worksheets("Blatt1").Range("D2;D3;D4").Copy Destination:=Worksheets("Blatt1").Range("E2;E3;E4")
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Suboptimierer
17.10.2016, 14:00

Nicht schlecht! Getestet und läuft?

2

Was möchtest Du wissen?