527 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (737 Punkte)

Hallo Karin wäre es möglich, wenn ich in Spalte G etwas eintrage, erst dann soll diese Zahl oder Text solange nach unten kopiert werden solange in Spalte A etwas enthalten ist. Ich müsste das in den nachfolgenden makro einbauen. Vielen Dank im Voraus.

Sub nachJahrSortieren()

Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten

    ActiveSheet.EnableOutlining = True 'für Gliederung

    ActiveSheet.EnableAutoFilter = True  'AutoFilter trotz Blattschutz

Sheets("Alle Teilnehmer").Activate

ActiveSheet.Range("A:n").Select     'ab Spalte G2 sortieren von Z bis A

Selection.Sort Key1:=Range("G2"), Key2:=Range("B2"), _

Order1:=xlDescending, Header:=xlYes, _

OrderCustom:=1, MatchCase:= _

False, Orientation:=xlTopToBottom

    Dim lngLetzte As Long       'Formel ab Spalte H2:I2 eintragen

    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)

    Cells(2, 8).Formula = "=IF(COUNTIF($I$2:I2,I2)=1,COUNTIF(I:I,I2),"""")"

    Cells(2, 9).Formula = "=IF(B2="""","""",B2&""  ""&C2&""  ""&E2)"

    Cells(2, 11).Formula = "=IF(AND(H2=1,G2=$L$1),""neu"","""")"

    Range("i2:H2").AutoFill Destination:=Range(Cells(2, 8), Cells(lngLetzte, 9)), Type:=xlFillDefault

    Range("k2").AutoFill Destination:=Range(Cells(2, 11), Cells(lngLetzte, 11)), Type:=xlFillDefault

        With Range("j2:J2")         ' Spalten und Rahmenfarbe ab Spalte J2 eintragen

        .HorizontalAlignment = xlCenter

        .Interior.Color = 13750737

        With .Borders(xlEdgeTop)

            .LineStyle = xlContinuous

            .Color = 11184814

            .Weight = xlThin

        End With

        .AutoFill Destination:=Range(Cells(2, 10), Cells(lngLetzte, 10)), Type:=xlFillFormats

    End With

Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten

    Range("G2").Select

End Sub

29 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Jelena,

irgendwie verstehe ich deine Frage nicht - was hat dieses Makro damit zu tun, dass du in Spalte G etwas einträgst? Code, der bei einem Eintrag in eine Zelle ausgeführt werden soll, steht im Change-Ereignis des Tabellenblattes und ist anderweitig nicht ausführbar so wie dein gepostetes Makro, welches sicher in einem Standardmodul steht.

Bis später, Karin
0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)

Hallo Karin, ich meinte, wenn ich in z.B. in Spalte (G300 kann variieren) 2022 eintrage, dann soll 2022 in Spalte G301 bis G400 nach unten kopiert werden weil in Spalte (A301 bis A400 kann variieren) eine Zahl enthalten ist. Das soll ausgeführt werden bevor das makro Sub nachJahrSortieren() zu ende ist. Danke

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Jelena,

dann musst du in einer Schleife von der Zeile der aktiven Zelle +1 bis zur letzten belegten Zeile der Spalte A laufen und dabei prüfen, ob in Spalte A etwas steht.

Bis später, Karin
0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo Karin, ich werde es ohne die letzte Beschreibung benutzen denn das ist für mich zu kompliziert. Danke.
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Bearbeitet von beverly_

Hi Jelena,

ich nehme an, wenn du einen Eintrag mit Enter abschließt springt der Cursor in die Zelle der darunter liegenden Zeile? Dann kannst du es so versuchen:

    Dim lngZeile As Long
    Dim varWert As Variant
    varWert = ActiveCell.Offset(-1, 0) '<== Wert aus darüberliegender Zelle
    For lngZeile = ActiveCell.Row To lngLetzte
        If Cells(lngZeile, 1) <> "" Then Cells(lngZeile, 7) = varWert
    Next lngZeile

Besser wäre es jedoch, wenn du - wie ich bereits geschrieben hatte - das Ausfüllen der Zellen in das Worksheet_Change-Ereignis nehmen würdest. Wenn du das nächmlich in einem selbständigen Makro machst, könnte der Cursor bereits in eine andere Zelle gesetzt worden sein und dann würden folglich die falschen Daten übertragen werden.

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo Karin, es werden daten aus einer anderen Datei in Spalte A, B, C, D, E und F als Werte eingefügt z.B. Spalte A300 bis F400 (300 bis 400 kann variieren) und dann trage ich in Spalte G300 (300 kann variieren) die Zahl (2022 kann variieren) ein und dann beim Ausführen des makros Sub nachJahrSortieren() soll in Spalte G301 bis G400 die Zahl 2022 eingetragen werden. Wenn das möglich ist ansonsten benutze ich mein beschriebenes makro ohne diesen teil. Danke
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Was der Code machen soll ist mir schon klar - hast du ihn denn überhaupt schon mal getestet?

Übrigens widerspricht das, was du machen willst, nicht meiner Aussage, dass man das Übertragen einer Eingabe in eine Zelle besser in das Worksheet_Change-Ereignis schreibt als in ein Makro, das (irgendwie) erst noch gestartet werden muss.

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo Karin, mein makro funktioniert bestens ich möchte nur dass mein beschriebener teil wenn möglich eingefügt wird. Danke
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Der Code ist doch für dein Makro - du musst ihn nur an den Anfang schreiben...

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Bearbeitet von jelena
Hallo Karin, habe dein Code am anfang gesetzt die eingegebene Zahl in Spalte G wird aber nicht nach unten kopiert (bis zum ende der eingabe aus Spalte A).

Vieleicht wäre es einfacher die erste leere Zelle in Spalte G suchen und die Zahl aus der letzten beschriebenen Zelle aus Spalte G nach unten kopieren (bis zum ende der eingabe aus Spalte A). Danke
...