Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
380to384
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
380to384
380to384
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleifen bei VBA

Schleifen bei VBA
13.02.2004 10:18:23
Tobias
Hallo,
habe mich seit zwei Tagen das erste Mal mit VBA beschäfitgt.
Habe nun folgende Frage:
In einer For...Next- Schleife soll sich neben meinem Laufwert "i", bei jedem Schleifendurchlauf noch gleichzeitig zwei andere Laufwertvariablen ändern.
Ist es also möglich mit einer For...Next- Schleife drei Laufwertvariablen zu ändern?
Muß ich vielleicht eine andere Schleifenart wählen?
Wer kann mir einen entscheidenen Tipp geben?
Tobias

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifen bei VBA
13.02.2004 10:28:16
Alex K.
Hallo Tobias,
es gibt immer nur eine Schleifenvariable.
Für dein Problem probiere mal dass:

Dim i, x, y as Integer
x = 1
y = 1
For i = 1 to 100
'dein Code
x = x + 1
y = y + 1
Next I

AW: Schleifen bei VBA
13.02.2004 10:36:34
Tobias
Hört sich sehr gut. Danke!
Hät ich nur mal meinen Kopf angestrengt!
Nun aber mein zweite Unwissenheit:
i ist in meinem Fall eine Zahl (also integer)
dagegen sind x,y Zellenkoordinaten
x soll von "B4 bis BA4" und
y von "B11" bis "BA11" laufen,
mit x = x + 1
y = y + 1
werde ich wohl kein Erfolg haben.
Wie erhöht man Zellenkoordinaten?
Tobias
Anzeige
AW: Schleifen bei VBA
13.02.2004 10:46:42
Alex K.
Hallo Thorsten,
das kommt darauf an, wie du mit den Zellkoordinaten arbeitest.
Folgende Möglichkeit funktioniert.

Dim x, y As Range
Dim i As Integer
Set x = ActiveSheet.Range("B4:BA4")
Set y = ActiveSheet.Range("B11:BA11")
For i = 1 To x.Count
MsgBox "Zeile 4: " & x(i).Value & "; Zeile 11: " & y(i).Value & vbNewLine & _
"Adressen: " & x(i).Address & "; " & y(i).Address
Next i

AW: Schleifen bei VBA
13.02.2004 11:02:09
Tobias
Hallo Alex,
heiße übrigens Tobias
Mir ist alles verständlich bis auf:
MsgBox "Zeile 4: " & x(i).Value & "; Zeile 11: " & y(i).Value & vbNewLine & _
"Adressen: " & x(i).Address & "; " & y(i).Address
mir geht es jetzt nur noch darum, dass x und y in der Schleife am Ende jeweils um eine Koordinate erhöht werden, zb. von B4 auf C4.
i ist unabhängig von x und y, deswegen denke ich dass " & x(i).Value & " ein falscher Ansatz ist.
Gruß
Tobias
Anzeige
AW: Schleifen bei VBA
13.02.2004 11:28:18
Alex K.
Hallo Thorsten,
das konnte ich ja nicht wissen. Deshalb habe ich das Ganze ja auch nur als Beispiel im Umang mit Koordinaten gebracht.
In deinem Fall würde ich dann so arbeiten:

dim i as Integer
dim x, y as Long 'Da Row und Column Eigenschaften der Range-Objekte ebenfalls Long sind
Dim rngX, rngY as Range
x = 2 'Startspalte B
y = 2
For i = 1 to 100
'Zelle der Zeile 4 von Spalte B bis x
set rngX = ActiveSheet.Cells(4, x)
MsgBox rngX.Value & "; Adresse: " & rngX.Address
'x dann entsprechend deiner Bedingung erhöhen
if "deine Bedingung" then
x = x + 1
end if
Next i

Anzeige
AW: Schleifen bei VBA
13.02.2004 11:47:53
Tobias
Bin irgendwie noch nicht auf dem richtigen Pfad:
Gebe dir mal mein Quellcode an.
Probleme sind im Kommentar geschrieben.
Dim i As Integer
Dim x, y As Long
Dim rngX, rngY As Range
x = 2 'Startspalte B
y = 2

For i = 1 To 52

Selection.AutoFilter Field:=22, Criteria1:="i"

Range("H11:I11").Select
Selection.Copy
Windows("Mischung.xls").Activate ' hier kommt eine andere Excel-Datei

Set rngX = ActiveSheet.Cells(4, x) ' erste Zelle wird definiert
Range("rngX").Select ' Hier gibts Probleme: Die aktuelle Zelle von rangX soll ausgewählt werden.
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True ' nur Verarbeitung
Windows("abfallkr.xls").Activate
Range("J11:Q11").Select ' Zellen bleiben konstant
Application.CutCopyMode = False
Selection.Copy
Windows("Mischung.xls").Activate

Set rngY = ActiveSheet.Cells(4, x) ' zweite Zelle wird definiert.
Range("rngY").Select ' definierte Zelle soll ausgwählt werden.
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

x = x + 1 ' Erhöhung der esten Zelle
y = y + 1 ' Erhöhung der zweiten Zelle
Windows("abfallkr.xls").Activate
Next i

Ich hoffe du kannst damit was anfangen.
Anzeige
AW: Schleifen bei VBA
13.02.2004 12:01:55
Alex K.
Hallo Tobias (jetzt habe ich es endlich richtig :-)
Hier liegt dein Fehler

Set rngX = ActiveSheet.Cells(4, x) ' erste Zelle wird definiert
Range("rngX").Select ' Hier gibts Probleme: Die aktuelle Zelle von rangX soll ausgewählt werden.

Überlege mal, warum rngX as Range definiert ist - richtig, weil es somit schon ein Range Objekt darstellt.
Also kannst du direkt mit
rngX.Select
AW: Schleifen bei VBA
13.02.2004 13:22:06
Tobias
Danke, Danke, Danke!
Es klappt!
Was wäre ich nur ohne deine Hilfe und dieses Forum!
Danke für die Rückmeldung - Forum ist Klasse:-) oT
13.02.2004 13:50:48
Alex K.
AW: Schleifen bei VBA
13.02.2004 10:28:25
PeterW
Hallo Tobias,
eine Möglichkeit wäre, die Werte am Ende der Schleife zu erhöhen:
var2= 12
For i = 1 to 100
'Schleife
var2 = var2 +2
Next
Gruß
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige