Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Schleife für einen Zellenbereich

Forumthread: VBA Schleife für einen Zellenbereich

VBA Schleife für einen Zellenbereich
07.12.2024 23:07:43
Karl
Hallo an das Forum....
Ich benötige mal Eure hilfe....
hab versucht eine Schleife einzubauen die einmal für den Zellenbereich (F2:F60) durchlaufen soll,
aber jedesmal beim Start, rattert der Code solange durch bis ich mit Esc Taste abbreche.
Als Laie ist das nicht ganz einfach wie für Profis wie Euch....


Sub FindString()
Application.DisplayAlerts = False
Dim c As Range
Dim a As String

Range("F3").Activate
With Tabelle1.Range("F2:F60")
Set c = .Find("1", LookIn:=xlValues)
If Not c Is Nothing Then
a = c.Address
Do
c.Activate
ActiveCell.Offset(0, -5).Copy
Range("H65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
Application.DisplayAlerts = True
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife für einen Zellenbereich
07.12.2024 23:59:33
ralf_b
du solltest auch die Adresse als Abbruchkriterium mitnehmen.
Loop While Not c Is Nothing And c.Address > a
AW: VBA Schleife für einen Zellenbereich
08.12.2024 07:37:00
Karl
Hei danke...klappt wunderbar hab das grad getestet....
AW: VBA Schleife für einen Zellenbereich
08.12.2024 00:06:49
Yal
Hallo Karl,

ein klarer Fall: die Suche in einem Bereich F2:F60 fängt mit der Zelle F2 aber sucht nach der Zelle F60 ab der Zelle F2 weiter, wenn man FindNext verwendet.

Der Fehler liegt in der Schleifen-Kontroll: es muss geprüft werden, dass die gefundene Zelle nicht die erstgefundene Zelle entspricht.

Loop While c.Address > a

Das ist auch der Grund, warum am Anfang
a = c.Address
gemacht wird.

VG
Yal
Anzeige
AW: VBA Schleife für einen Zellenbereich
08.12.2024 11:43:37
daniel
Hi

Unnötig kompliziert

dim c as range

For each c in Tabelle1.Range("F2:F60").Cells
If c.value = 1 then
c.offset(0, -5).copy
Range("H65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End if
Next


Oder noch einfacher, wenn nur der Wertübernommen werden soll:

dim c as range

For each c in Tabelle1.Range("F2:F60").Cells
If c.value = 1 then Range("H65536").End(xlUp).Offset(1, 0).value = c.offset(0, -5).value
Next


Gruß Daniel
Anzeige
AW: VBA Schleife für einen Zellenbereich
08.12.2024 07:38:29
Karl
Hei Danke klapp auch wie gewünscht....besten dank

Forumthreads zu verwandten Themen

Anzeige
Anzeige