For Steuervariabel wird bereits verwendet! was bedeutet das?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nein, darum geht es nicht.
Du hast ZWEI For-.Next-Schleifen ineinander geschachtelt, das ist möglich, und kein Problem.
Allerdings nutzt Du bei der zweiten Schleife die gleiche Variable, nämlich "Zelle" wie in der übergeordneten.
DAS ist der Fehler.
Schreibe in die ERSTE Zeile:
sub kopieren( )

Dim Zelle As Range Dim Zelle2 As Range Dim Wert As Variant
UND dann in die zweite Schleife,
For Each Zelle2 In .Range("H6:I6")
.....
Zelle2.Value = ActiveSheet.Range("J18")
....
Zelle2.Value = ActiveSheet.Range("J17")
....
Dann sollte es klappen.
ODER?
P.S.: Ich habe den Code nicht weiter überprüft (fehlt da vlt. noch ein Next?, dann "Next Zelle2". )
Habe leider keine Zeit mehr, muss zur Arbeit.
Melde Dich wenn es noch Probleme gibt.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

NACHTRAG:
Ich sehe gerade, die Schleifen müssen nicht unbedingt geschachtelt sein, dann reich vlt. auch:
...
Zelle.Value = ActiveSheet.Range("J16")
Next Zelle
With Sheets("tabelle2")
...
Also die erste Schleif abschließen, dann die zweite starten. DAS kannst Du mit EINER Variablen (Zelle) machen.

0
@Oubyi, UserMod Light

HI :)

habe meinen Fehler entdeckt,

(BSP) statt :

Next zelle1

next Zelle2

Next Zelle3

musste ich :

next zelle3

next zelle2

next zelle1

hinschreiben, sprich alles umgekehrt... weiß zwar nicht ganz warum der Befehl so geschrieben werden soll aber es funktioniert :)

1000 DANK! newb!

0

Hallo Oubyi,

ich habe es so eingefügt wie du gesagt hast, siehe code :

Sub Kopieren()

Dim Zelle As Range

Dim zelle2 As Range

Dim Wert As Variant

Wert = ActiveSheet.Range("J16:j17")

With Sheets("Tabelle2")

For Each Zelle In .Range("F6:G6")

If ((Range("J16").EntireRow.Hidden = True)

Or (Range("J16").EntireColumn.Hidden = True))

Or (Range("J16").Font.Strikethrough = True) Then

Zelle.Value = ActiveSheet.Range("J17")

Else

Zelle.Value = ActiveSheet.Range("J16")

With Sheets("Tabelle2")

For Each zelle2 In .Range("H6:G6")

If ((Range("J17").EntireRow.Hidden = True)

Or (Range("J17").EntireColumn.Hidden = True))

Or (Range("J17").Font.Strikethrough = True) Then

zelle2.Value = ActiveSheet.Range("J18")

Else

zelle2.Value = ActiveSheet.Range("J17")

End If

Next Zelle

End With

Next zelle2

End Sub

Beim ausführen des Codes erscheint folgende Meldung :

"ungültiger Verweis auf Next Steuervariable"

habe ich da was übersehen oder vergessen ?

Gruß Newb

0
@newb1986

Ich versuche es mal:
1.
WAS sollen diese beiden Zeilen:
Dim Wert As Variant Wert = ActiveSheet.Range("J16:j17")
Macht keinen Sinn, und würde wohl auch nicht funktionieren.
2.
Einmal: With Sheets("Tabelle2")
genügt.
3.
Du hast die beiden For Next Schleifen geschachtelt, ich denke das macht hier keinen Sinn.
4.
So würde der Code zumindest laufen:
Sub Kopieren()
Dim Zelle As Range
Dim zelle2 As Range
With Sheets("Tabelle2")
For Each Zelle In .Range("F6:G6")
If ((Range("J16").EntireRow.Hidden = True) _
Or (Range("J16").EntireColumn.Hidden = True)) _
Or (Range("J16").Font.Strikethrough = True) Then
Zelle.Value = ActiveSheet.Range("J17")
Else
Zelle.Value = ActiveSheet.Range("J16")
End If
Next Zelle
'''''''''''''''
For Each zelle2 In .Range("H6:G6")
If ((Range("J17").EntireRow.Hidden = True) _
Or (Range("J17").EntireColumn.Hidden = True)) _
Or (Range("J17").Font.Strikethrough = True) Then
zelle2.Value = ActiveSheet.Range("J18")
Else
zelle2.Value = ActiveSheet.Range("J17")
End If
Next zelle2
End With
End Sub
Allerdings passiert direkt noch nichtst, Du weist nur den beiden Variablen Zelle und zelle2 Werte zu.
Ich denke, was Du damit machen willst kommt dann wohl noch.
Gehe den Code mal mit F8 Step by Step durch.
Danke fürs ☆

0

hab zwar kein plan, welche sprache das ist, aber: wo endet die for-schleife?

VBA -Sprache :P

die Schleife endet da wo "Next Zelle" steht beantwortet das deine frage?

gruß newb

0