Tabellenblatt irgendwie als Array definieren

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Sylnois.

    Tabellenblatt irgendwie als Array definieren

    Hey Jungs und Mädels (xD)
    Hab ein kleines Problem.
    Ich möchte alle Daten von den ersten 5 Tabellen in die 6 Tabelle kopieren.

    Hier ist mein Code:

    Private Sub CommandButton1_Click()
    Dim x As Integer
    Dim y As Integer

    x = 1
    y = 1
    Tabelle1.Activate
    Range("A1").Activate
    Do While Not ActiveCell.Value = ""
    Tabelle6.Range("A" & y).Value = Tabelle1.Range("A" & x).Value
    Tabelle6.Range("B" & y).Value = Tabelle1.Range("B" & x).Value
    Tabelle6.Range("C" & y).Value = Tabelle1.Range("C" & x).Value
    x = x + 1
    y = y + 1
    ActiveCell.Offset(1, 0).Activate
    Loop

    x = 1
    Tabelle2.Activate
    Range("A1").Activate
    Do While Not ActiveCell.Value = ""
    Tabelle6.Range("A" & y).Value = Tabelle2.Range("A" & x).Value
    Tabelle6.Range("B" & y).Value = Tabelle2.Range("B" & x).Value
    Tabelle6.Range("C" & y).Value = Tabelle2.Range("C" & x).Value
    x = x + 1
    y = y + 1
    ActiveCell.Offset(1, 0).Activate
    Loop

    x = 1
    Tabelle3.Activate
    Range("A1").Activate
    Do While Not ActiveCell.Value = ""
    Tabelle6.Range("A" & y).Value = Tabelle3.Range("A" & x).Value
    Tabelle6.Range("B" & y).Value = Tabelle3.Range("B" & x).Value
    Tabelle6.Range("C" & y).Value = Tabelle3.Range("C" & x).Value
    x = x + 1
    y = y + 1
    ActiveCell.Offset(1, 0).Activate
    Loop

    x = 1
    Tabelle4.Activate
    Range("A1").Activate
    Do While Not ActiveCell.Value = ""
    Tabelle6.Range("A" & y).Value = Tabelle4.Range("A" & x).Value
    Tabelle6.Range("B" & y).Value = Tabelle4.Range("B" & x).Value
    Tabelle6.Range("C" & y).Value = Tabelle4.Range("C" & x).Value
    x = x + 1
    y = y + 1
    ActiveCell.Offset(1, 0).Activate
    Loop

    x = 1
    Tabelle5.Activate
    Range("A1").Activate
    Do While Not ActiveCell.Value = ""
    Tabelle6.Range("A" & y).Value = Tabelle5.Range("A" & x).Value
    Tabelle6.Range("B" & y).Value = Tabelle5.Range("B" & x).Value
    Tabelle6.Range("C" & y).Value = Tabelle5.Range("C" & x).Value
    x = x + 1
    y = y + 1
    ActiveCell.Offset(1, 0).Activate
    Loop
    End Sub

    Ich benutze 5 Do-Schleifen.
    Das möchte ich eben umgehen.
    Darum frage ich euch. Kann man ne Tabelle irgendwie als Array definieren?
    Ich meinte da an sowas:
    Tabelle(x).Actiavate

    LG Sylnois

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sylnois“ ()

    Wo liegen Deine Tabellen? Wenn die auf den entsprechenden Blättern (Worksheets) in der gleichen Arbeitsmappe sind, kannst Du eine Schleife machen:

    Quellcode

    1. for i=1 to 5
    2. ..
    3. Tabelle6.Range("A"&y).value = worksheets(i).range("A"&X).value
    4. usw
    5. next


    (geht sicher auch mit do while, aber ich mag lieber for ;) )

    übrigens, hier sind auch Mädels im Forum!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Adrian“ ()

    sorry, habe mich vertippt: die for-schleife endet mit "next".

    eigentlich müßte es gehen, wenn i nicht größer wird als die Anzahl der Blätter. Wenn nicht, poste bitte deinen Code / Datei (bzw. eine vereinfachte Version davon)
    Jaa.. Ich glaub ich habs fast..
    Noch ne letzte frage..
    Wie kann ich ein Worksheet einfach aktivieren?
    So gehts nicht: Worksheets(i).Activate

    Dankee ;)

    Edit: Tut mir Leid. Beim dritten mal gings. :S
    Vielen Dank für deine Hilfe. Alles läuft nun so wie ichs wollte.

    Danke :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sylnois“ ()