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.

Blattname als Variable
#1
Hallo zusammen,
wenn ich das Makro so ausführe, funktioniert es.
PHP-Code:
Private Sub CommandButton1_Click() 'Uhrzeit sortieren
    Range("A1:I109").Select
    Range(Cells(2, 1), Cells(51, 9)).Interior.ColorIndex = 0
    ActiveWorkbook.Worksheets("Neue Liste").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Neue Liste").Sort.SortFields.Add Key:=Range( _
        "H2:H109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Neue Liste").Sort.SortFields.Add Key:=Range( _
        "I2:I109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Neue Liste").Sort.SortFields.Add Key:=Range( _
        "B2:B109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Neue Liste").Sort
        .SetRange Range("A1:I109")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With 
End Sub

Wenn ich aber zuvor noch Blattname = ActiveSheet.Name zuvor setze als Variable, dann bekomme ich den Fehler 9.
PHP-Code:
Private Sub CommandButton2_Click() 'Sortieren nach Name
Blattname = ActiveSheet.Name
    Range("A1:I109").Select
    Range(Cells(2, 1), Cells(51, 9)).Interior.ColorIndex = 0
    ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Add Key:=Range( _
        "B2:B109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Add Key:=Range( _
        "C2:C109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Blattname").Sort.SortFields.Add Key:=Range( _
        "D2:D109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Blattname").Sort
        .SetRange Range("A1:I109")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub 

Der Name wird korrekt ausgelesen. das habe ich kontrolliert.
Was muss ich ändern, damit die Sortierung mit dem Blattnamen läuft?
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten Top
#2
Das liegt daran:  
Code:
Blattname <> "Blattname"
Antworten Top
#3
Hallo

du darfst grundsätzlich eine Variable nicht in "" setzen, sondern gibst ihn so an Range(Blattname)

Hinweis:  Statt ActiveSheet gibst du besser den echten Tabellen Namen an, sonst wird das Makro in jedem aktivem Sheet ausgeführt.  Auch in Sheets wo du es sicher nicht willst!

Hinweis 2:  du gibst zu beginn des Codes Range("A1:I109").Select an. Sieht nach einer Makro Recorder Aufzeichnung aus.
Wir verzichten auf unnötige Select im Code. Die Zeile solltest du löschen.

Tipp zu 109:  mit der Zeile 109 bist du statisch festgelegt auf diese Zeile. Deine nächste Frage im Forum wird sein, wie kann ich das ändern, wenn die Tabelle nach unten wächst. Das machst du am besten mit der LastZell Variante.  Erklären wir sie bevor du fragst.

LastCell = Cells(Rows.Count, 1).End(xlUp).Row  -   findet die letzte Zelle in Spalte A (Spalte 1)
Range("A1:I" & LastZell).Sort    usw.   -  sortiert dann den dynamischen Bereich bis LastZell

Ich hoffe die Erklärung hat dir weitergeholfen gleich zwei Fragen zu beantworten.

mfg Gast 123
Antworten Top
#4
Vielen Dank für die Hilfe.
Ich werde die überflüssigen Zeilen löschen.
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
Antworten Top
#5
Oder

Code:
Private Sub CommandButton1_Click() 'Uhrzeit sortieren
  with sheet1
    . Cells(2, 1).resize(49, 9)).Interior.ColorIndex = 0
    .range("A1:I109").Sort .cells(1,8),,.cells(1,9),,,.cells(1,2),,1
  End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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