Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Vba Tabelle sortieren wks.activate
#1
Hallo Gemeinde, mit folgendem Code wird das Tabellenblatt nach Datum sortiert. Der Code läuft aber nur wenn das Tabellenblatt aktiviert ist. Gibt es dafür eine geschicktere Lösung?

Code:
Sub DatumSortieren(strKonto As String)
    Dim intZ As Integer
    Dim rngBereich As Range
   
    Application.ScreenUpdating = False
    Worksheets(strKonto).Activate
    intZ = letzteZeile(strKonto) - 1
    Set rngBereich = Worksheets(strKonto).Range("A2:E" & intZ)
    rngBereich.Sort key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo
    Worksheets(1).Activate
    Application.ScreenUpdating = True
   
End Sub

... und einen schönen Sonntag noch :-)
Zitieren
#2
Hallo,

ungetestet ...

Code:
Sub DatumSortieren(strKonto As String)

    Dim lngZ      As Long
    Dim rngBereich As Range
 
    Application.ScreenUpdating = False
   
    lngZ = letzteZeile(strKonto) - 1
   
    Set rngBereich = ThisWorkbook.Worksheets(strKonto).Range("A2:E" & lngZ)
   
    rngBereich.Sort Key1:=ThisWorkbook.Worksheets(strKonto).Range("A2"), _
    Order1:=xlAscending, Header:=xlNo
   
    Application.ScreenUpdating = True
 
End Sub

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
Danke, jetzt funzt es. Unvollständige Referenzierung war das Problem?  Idea


Stefan
Zitieren
#4
Moin!
Ja, es war die fehlende Referenzierung zu Range("A2").
Folgendes dürfte aber auch reichen, Du brauchst keine Variablen:

Sub Kuerzer(strKonto As String)
With ThisWorkbook.Worksheets(strKonto)
  .Cells(1).CurrentRegion.Sort .Range("A2"), xlAscending, Header:=xlYes
End With
End Sub

Gruß Ralf
Zitieren
#5
Danke, läuft auch.... da muss ich mich noch bisschen mit Cells(1) und CurrentRegion beschäftigen :-)

Danke
Stefan
Zitieren
#6
.Cells(1) ist gleich .Cells(1, 1) also Range("A1")
.CurrentRegion ist der zusammenhängende Zellbereich "drumherum", was in der Regel dem zu sortierenden Zellbereich entspricht.
Eine leere Spalte und/oder Zeile würde ihn unterbrechen.

Dies dürfte Dich interessieren:
https://www.online-excel.de/excel/singsel.php?f=52
Zitieren
#7
Danke für den Link....
Stefan
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions