Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Arbeitsblattname als Variable setzen
#1
Hallo, ich möchte mit dem unten aufgeführten Makro eine Arbeitsblatt sortieren.

das klappt soweit auch ganz gut. Ich habe jedoch das Problem das sich der Name dieses Arbetisblattes immer ändert.

Daher möchte ich den zuerst den aktuellen Namen des Arbetisblattes ermitteln und diesen dann als Variable verwenden.


Set Blattname = activeWorkbook.ActiveSheet.Name  (soll dann "TX_2020-09-19_2020-09-20-1" ergeben)



Sub MakroS()

Set Blattname = activeWorkbook.ActiveSheet.Name

    ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort.SortFields.Add _
        Key:=Range("C2:C50"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort
        .SetRange Range("A1:R50")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort.SortFields.Add _
        Key:=Range("M2:M50"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TX_2020-09-19_2020-09-20-1").Sort
        .SetRange Range("A1:R50")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub



So das der Code später dann so aussehen sollte:

ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Add _
        Key:=Range("C2:C50"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Blattname").Sort
        .SetRange Range("A1:R50")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

usw.

Leider bekomme ich das irgendwie nicht hin.

Kann mir jemand helfen.

Danke Frank
Antworten Top
#2
Moin!
Mit Set setzt Du eine Objektvariable, die Du natürlich entsprechend dimensionieren solltest.
Diese kannst Du dann gleich als solches ansprechen.

Dim Blattname As Worksheet
Set Blattname = ActiveSheet
Blattname.Sort […]

Wenn Du den Blattname als Text nutzen willst, geht das so

Dim Blattname As String
Blattname = ActiveSheet.Name
Worksheets(Blattname).Sort […]

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hallo Ralf, vielen Dank für deine Hilfe - jetzt klappt alles. !!!
Antworten Top


Gehe zu:


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