Tabellen ausfüllen mit einer Makro.

  • Excel

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von BCbro.

    Tabellen ausfüllen mit einer Makro.

    Hallo Liebe Leute,ich habe ein kleines Problem, mit meiner Makro. Ich würde gern eine Tabelle mit dieser Makro ausfüllen jedoch soll nach jedem eintrag die Aktivezellen um eine spalte nach rechts verschoben werden. Also die Makro beschreibt erst mal die Spalten (D5-D30). Beim nächsten Durchlauf der Makro sollen aber die Spalten (E5-E30) Beschrieben werden. Die Makro bleibt in diesem fall gleich jedoch möchte ich gern nur einen Butten haben der mir dann alle Daten fortlaufend ausfüllt? Hat Jemand eine Idee ? Ich habe es schon mit ActivecCell.offset(0,1).select ausprobiert, jedoch wird beim starten der Makro wieder die alten spalten beschrieben.

    Mit Freudlichen grüßen
    Bilal Chibani

    Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed

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

    BCbro schrieb:

    Also die Makro beschreibt erst mal die Spalten (D5-D30). Beim nächsten Durchlauf der Makro sollen aber die Spalten (E5-E30) Beschrieben werden
    Möchtest du immer die letzte freie Spalte beschreiben?
    Oder wie entscheidest du, ob es ein erster oder ein nächster Durchlauf ist?
    Zeig mal deinen bisherigen Code.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Visual Basic-Quellcode

    1. Range("C5").Select
    2. ActiveCell.FormulaR1C1 = _
    3. "=SUM('[Tabelle]Total'!R30C3,'[Tabelle]Total'!R19C4:R30C4)/10^3"
    4. Range("C6").Select
    5. ActiveCell.FormulaR1C1 = _
    6. "=SUM('Tabelle]]Total'!R30C6,'[Tabelle]]Total'!R19C7:R30C7)/10^6"
    7. Range("C7").Select

    Also es immer wenn der Button gedrückt wird aus einer anderen Datenback Werte entnommen werden die dann in die ersten Spalte (C5-C30) eingetragen werden, wenn ein weiteres mal auf den button gedrückt wird soll die Makro erkennen das Range(C5:C30) voll ist und auf (D5-D30) die eintragung macht.

    *Code-BBCode eingefügt*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „BCbro“ ()

    hab die Bezüge jetzt raus genommen also am Ende kommen noch bezüge rein zu den Tabellen.
    Ich weiss einfach nicht genau wie ich immer eine spalte nach rechts komme um dort weiter zu mache.
    hab es mit ActiveCell.offset(0,1).select probiert jedoch bekomme ich es nicht hin das die Makro dann an der neuen Zelle weiter macht er springt immer weider in C rein. Ich weiss hab ja auch die immer in der Syntax C als Range angegeben. Aber wollte einfach fragen ob es möglich ist ?

    Also um es bildlich zu mache
    X -->Nachster durchlauf X
    X X
    X X
    X X
    X X

    Im Moment wird alles Überschrieben.
    Entschuldige es Funktioniert doch nicht. Die Makro startet jetzt nihct mehr bei Zelle 5C sondern einfach bei 5A.
    Ausserdem versetzt sich das Programm nicht um einen Spalte also von 5C auf 5D im nächsten durchlauf.
    Ich weiss nicht was schiefgelaufen ist. Nach dem durchlauf läuft er auch nihct eine Zeille nach rechts. Sondern Überschreibt mir wieder alles. Wie bei der ersten Version.

    Visual Basic-Quellcode

    1. Dim LastCol As Integer
    2. Dim FirstCol As Integer
    3. Range("C5").Activate
    4. LastCol = Cells(30, Columns.Count).End(xlToRight) + 1
    5. Range("C5").Select
    6. Cells(5, LastCol).FormulaR1C1 = "=SUM('[XXX]Total'!R30C3,'[X]Total'!R19C4:R30C4)/10^3"
    7. End Sub

    *Code-BBCode eingefügt*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „BCbro“ ()

    Nimm diesen Code

    VB.NET-Quellcode

    1. Sub FillCells()
    2. Dim LastCol As Integer
    3. LastCol = Cells(5, Columns.Count).End(xlToLeft) + 1
    4. If LastCol < 3 Then LastCol = 3
    5. Cells(5, LastCol).FormulaR1C1 = "=SUM('[Tabelle]Total'!R30C3,'[Tabelle]Total'!R19C4:R30C4)/10^3"
    6. End Sub
    und lass alles andere mal weg.
    Läuft es dann mit der Zeile 5 korrekt, dass er immer eine neue Spalte eröffnet?

    Und vergiss die ganzen .Select und .Activate Statements.
    Das ist nur vom Macro-Editor erzeugtes GUI-Geraffel, das im Code nichts zu suchen hat.
    Adressiere die Zellen direkt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Visual Basic-Quellcode

    1. Sub RechteckabgerundeteEcken_Klicken()
    2. Dim LastCol As Integer
    3. LastCol = Cells(5, Columns.Count).End(xlToLeft) + 1
    4. If LastCol < 3 Then LastCol = 3
    5. Cells(5, LastCol).FormulaR1C1 = _
    6. "=SUM('[XXX.xlsx]Total'!R19C3,'[XXX.xlsx]Total'!R19C4)/10^3"
    7. End Sub



    'Danke das Klappt super !!!
    'Jedoch wird die nächste spalte nicht verwendet wenn ich den Butten ein weiteres betätige..
    'hat vielleicht jemand noch einen einfall. Also ich hab es auch mit einer If schleife Probiert um abzufragen ob die Celle Leer Ist wenn nicht dann soll die eine Spalte nach rechts gegangen werden. Aber ich glaube ich hatte den falschen Ansatz meine Makro hat dann nicht mehr funktioniert.

    *BBCode korrigiert*

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Marcus Gräfe“ ()