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

Hallo Karin, ist es möglich diesen code in DieseArbeitsmappe einzufügen und nicht in Tabelle1, 2, 3 usw. da ich diesen code für mehrere Tabellenblätter brauche. Danke

Sub Nach_Datum_sortieren()  ' Schaltfläche2_KlickenSieAuf Makro
    Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
    Dim lngLetzte As Long
    Dim lngLetzteF As Long
    With Worksheets("Tabelle1")
        .EnableOutlining = True 'für Gliederung
        .EnableAutoFilter = True  'AutoFilter trotz Blattschutz
        lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)    'Letzte nicht leere Zelle in Spalt A
        .Cells(3, 6).Formula = "=F2+D3+E3"    'Formel nach unten kopieren
        .Cells(3, 7).Formula = "=F3-$H$1"    'Formel nach unten kopieren
        .Range("f3:g3").AutoFill Destination:=Range(Cells(3, 6), Cells(lngLetzte, 7)), Type:=xlFillDefault    'Formel nach unten kopieren
        .Range("A3:n5000").Sort Key1:=.Range("A3"), _
         Order1:=xlAscending

        End With
    Loletzte = Cells(Rows.Count, 6).End(xlUp).Row '+ 1
    Cells(Loletzte, 6).Select 'das kann gelöscht werden
    
    Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub

5 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jelena,

dieser Code gehört in kein Tabellenblatt und auch nicht ins Codemodul DieseArbeitsmappe - er gehört in ein Standardmodul. Anschließend ersetzt du diese Zeile With Worksheets("Tabelle1") durch diese: With ActiveSheet - danach kannst du ihn im gerade aktiven Tabellenblatt benutzen. Außerdem benötigst du natürlich in jedem Tabellenblatt einen Button, den du mit diesem Makro verknüpfst, oder du rufst das Makro auf im Register: Ansicht -> Befehlsgruppe: Makros.

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo Karin, super Danke
0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Bearbeitet von jelena
Hallo Karin, habe die Zeile geändert und am anfang den folgenden Blattschutz eingefügt doch der Cursor soll zum Schluss in die erste leere Zelle in Spalte A springen.

ActiveSheet.Protect userinterfaceonly:=True, Password:="**"
ActiveSheet.EnableAutoFilter = True  'AutoFilter trotz Blattschutz
ActiveSheet.EnableOutlining = True 'für Gliederung

 Bitte um Hilfe.
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jelena,

die letzte belegte Zeile wird doch im Code bereits ermittelt - folglich kannst du mit der Codezeile

Application.Goto reference:=.Cells(lngLetzte + 1, 1), scroll:=True

in die erste freie Zelle der Spalte A springen, wobei diese in die linke obere Ecke des Blattes verschoben wird.

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Bearbeitet von jelena
Hallo Karin, ich habe es selber geschafft. Danke

    Loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(Loletzte, 1).Select
End Sub
...