VisualBasic Schleife einbauen

little-key

Cadet 2nd Year
Registriert
Jan. 2009
Beiträge
28
Wie bekomme ich den Code nun in eine Schleife, so dass Zelle für Zelle in Spalte F abgeklappert wird:

Sub test2()
Range("F1").Select
Dim strDatei As Variant
Dim strQuelle As String
Dim strZiel As String
strDatei = ActiveCell
strQuelle = "U:\Grosser\Bilder\Monacor\" & strDatei
strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
ActiveCell = "_NoImage.jpg"
Else
FileCopy strQuelle, strZiel
End If
End Sub

Danke Mario
 
Spalte? Meinst du ein bestimmtes GridControl? Was willst du überhaupt machen? Welche VB-Version?
Zu wenig Input für eine Antwort.


Standard-FOR-Schleifen:

Zählt von Eins bis Zehn und gibt jede Zahl aus.
Dim i As Integer
For i = 1 To 10
MsgBox "Zähler ist auf " & Str(i)
Next

Zählt jede zweite Zahl von Eins bis Zehn und gibt sie aus.
Dim i As Integer
For i = 1 To 10 Step 2
MsgBox "Zähler ist auf " & Str(i)
Next

Zählt rückwärts von 10 bis 1 und gibt sie aus:
Dim i As Integer
For i = 10 To 1 Step -1
MsgBox "Zähler ist auf" & Str(i)
Next



Standard-While-Schleife:

Die Schleife wird so lange ausgeführt, wie i nicht auf 10 gestellt ist.
Dim i As Integer
i = 0
While Not i = 10
i = i + 1
MsgBox "Zähler ist auf" & Str(i)
Wend
 
Zuletzt bearbeitet:
Ich denk mal hier gehts um VBA welches in Office integriert ist?

Paar mehr Infos wären tatsächlich nicht schlecht.
 
Ja, es geht um ein Makro bei Excel (falscher Themenbereich??)

Bin nun auch nicht so bewandert.
Der so dargestellte Code funktioniert und arbeitet die Zelle F1 ab.
Da aber in F2, F3 usw. der Code wiederholt werden muss, also die gesamte Spalte F, muss dieser irgendwie die einzelnen Zeilen abklappern. Da dachte ich an das Thema Schleife.

Oder gehts anders?
 
Moin Mario,

anbei ein Lösungsvorschlag.

Sub test2()
Dim strDatei As Variant
Dim strQuelle As String
Dim strZiel As String
Dim i, MAX as Integer
MAX = 10 'wieweit auch immer du willst

for i = 1 to MAX
Range("F"&i).Select
strDatei = ActiveCell
strQuelle = "U:\Grosser\Bilder\Monacor\" & strDatei
strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
ActiveCell = "_NoImage.jpg"
Else
FileCopy strQuelle, strZiel
End If
next
End Sub

Ist aus dem Kopf geschrieben, nicht getestet.
 
Soweit gut, er rattert wie gewünscht jede zeile durch.

Nur:

Der Parameter Max kann nicht von vorn herein definiert werden, da die Tabelle 10 aber auch 500 zeilen haben kann.

Kommt er auf eine Leerzeile kommt eine Fehlermeldung Debugger:
FileCopy strQuelle, strZiel

Es müsste noch irgendwie eine Prüfung Tabellenende erfolgen.
 
es gibt mit sicherheit eine funktion, die dir dir breite bzw länge der spalte zurückgibt. kenne mich in der sprache nicht aus aber denke mal es geht in richtung length(), wie bei arrays zum beispiel. musst du mal eine entsprechende api durchschauen. dann kanst du max im vorhinein mit dieser länge füllen.
 
strDatei = ActiveCell
strQuelle = "U:\Grosser\Bilder\Monacor\" & strDatei
strZiel = "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
If Dir("U:\Grosser\Bilder\Monacor\" & strDatei) = "" Then
ActiveCell = "_NoImage.jpg"
Else
FileCopy strQuelle, strZiel
End If



würde ich umbauen zu:


strDatei = ActiveCell
If Trim(strDatei) = "" Then
ActiveCell = "_NoImage.jpg"
Else
FileCopy "U:\Grosser\Bilder\Monacor\" & strDatei, "U:\Projekte\Websites\_Grosser\Cart\" & strDatei
End If


Trim entfernt alle Leerzeichen aus einem String.
 
Komisch, hatte ich gehabt und ging nicht, jetzt von Dir kopiert und geht.....
Naja besten Dank dafür.

Klasse Hilfe

Gruß Mario
 
Zurück
Oben