Clever-Excel-Forum

Normale Version: VBA in Excel - For Next bei Dim (Office365)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin, zusammen!

Ich habe einige (viele) Daten, die ich per Makro von einem in ein anderes Tabellenblatt per VBA transferiere.
Das Makro wird nur ewig lang [DIM RG(1)...RG(50)] und danach dann Active.Cell(x,y)=RG1...

Ich kam nun auf die kühne Idee, das ganze mit Hilfe von For-Next-Schleifen zu vereinfachen. (Kenne ich ja noch so ähnlich
von den endlosen Basic-Listings... Okay, ich bin alt, ich weiß *Lol)

Gesagt, getan... Als erstes die DIM

Dim Fest As Integer, Lines As Integer, Drw As Integer

For Fest = 1 To 30
Dim RG(Fest) As String
Next Fest

Probelauf... scheitert mit dem Warnhinweis "Konstanter Ausdruck erforderlich"...
Was mache ich falsch?

Es wäre super, wenn mir dabei jemand helfen könnte!
Danke schonmal im Voraus! Blush
Hallo,

es ist einfach in VBA:
Dim RG(1 To 30) As Integer

Gruß Sigi
Hallo,

beschreib doch bitte etwas ausführlicher, was du machen willst. Das:

Zitat:Ich habe einige (viele) Daten, die ich per Makro von einem in ein anderes Tabellenblatt per VBA transferiere.

geht bestimmt einfacher.
Hi,

wozu braucht man da Variablen? und erst recht viele?

Hier mal ein paar der vielen Möglichkeiten. Wenn du noch Fragen hast, nur zu...
Code:
Sub a()
'kopiert alles (Formeln, Formate etc.) von Blatt1!B2:F99 auf Blatt2 ab Zelle C10
Worksheets("Blatt1").Range("B2:F99").Copy Worksheets("Blatt2").Range("C10")
End Sub

Sub b()
'kopiert nur die Werte
Worksheets("Blatt2").Range("C10:G107") = Worksheets("Blatt1").Range("B2:F99")
End Sub

Sub c()
'kopiert nur die Werte (schnellere Version und man muss den Zielbereich nicht exakt angeben)
Worksheets("Blatt1").Range("B2:F99").Copy
Worksheets("Blatt2").Range("C10").PasteSpecial xlPasteValues
End Sub

Sub d()
'kopiert die Werte und verdoppelt sie dabei
Dim a As Variant
Dim i As Long, k As Long
a = Worksheets("Blatt1").Range("B2:F99")
For i = 1 To UBound(a, 1)
    For k = 1 To UBound(a, 2)
        a(i, k) = a(i, k) * 2
    Next k
Next i
Worksheets("Blatt2").Range("C10").Resize(UBound(a, 1), UBound(a, 2)) = a
End Sub
Zitat:Ich habe einige (viele) Daten, die ich per Makro von einem in ein anderes Tabellenblatt per VBA transferiere.

Wozu ? Warum Einträge duplizieren ?