Clever-Excel-Forum

Normale Version: unterschiedliche Sortierreihenfolgen speichern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Ich habe die Schaltflächen in die jeweils 1. Zeile der Tabellenblätter verfrachtet. Die Makros musste ich pro Blatt einzeln erstellen. Schaltflächen beschriftet, Makros zugewiesen, als .xlsm speichern. 

Funktionier tadellos! Ich kann jetzt zack zack umsortieren.

Vielen Dank für Eure Hilfe am Sonntagnachmittag.
Hi,

(04.07.2017, 20:22)Wodan schrieb: [ -> ]Die Makros musste ich pro Blatt einzeln erstellen.

das glaube ich nicht unbedingt.
Das hängt von diversen Parametern ab.

Poste doch einfach mal so ein paar Makros, vielleicht können wir sie zusammenfassen.
(02.07.2017, 19:02)GMG-CC schrieb: [ -> ]Den Bereich, den du da beschreibst, meine ich nicht. Das ist der Schnellzugriff.
Und da kannst du "fertige" Menü-Befehle noch einmal ablegen (für den schnellen Zugriff) oder auch Makros, die allgemein gültig sind und ein Symbol aus einer gegebenen Bibliothek (vielleicht auch andere?) zugewiesen bekommen haben.
Die Buttons, Shapes, … kannst nicht dorthin platzieren.
Ich finde, die gehören in das jeweilige Arbeitsblatt.

Ich möchte die Makros doch in den Schnellzugriff mit Symbolen legen. Der Vorgang ist mir auch soweit klar, aber ich habe immer noch das Problem, dass die von mir erstellten Makros nur für ein Tabellenblatt anwendbar sind. Will ich das Makro auf einem anderen Blatt anwenden kommt die Fehlermeldung: Laufzeitfehler 1004  Die Select Methode des Ranges Objektes konnte nicht ausgeführt werden. 
Das Makro darf sich also nicht nur auf das Tabellenblatt "Sägeliste Fräsen" beziehen, sondern auch auf das andere Blatt "Sägeliste Drehen", oder muss ganz allgemein gehalten sein. Nur wie erstelle ich ein allgemeingültiges Makro?



Code:
Sub FräsenNormal()
'
' FräsenNormal Makro
'

'
    Cells.Select
    Range("G11").Activate
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "U2:U3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "C2:C3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "N2:N3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "O2:O3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "P2:P3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "Q2:Q3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "R2:R3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort.SortFields.Add Key:=Range( _
        "S2:S3681"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sägeliste Fräsen").Sort
        .SetRange Range("A1:IX3681")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A2").Select
End Sub
Strg-D kann blatt-individuell funktionieren, auch wenn es mappen-weit gilt. Es muss nur abfragen, welches Blatt aktiv ist, und dann in die zugehörige Routine verzweigen.
Hi,

(12.09.2017, 22:33)Wodan schrieb: [ -> ]Das Makro darf sich also nicht nur auf das Tabellenblatt "Sägeliste Fräsen" beziehen, sondern auch auf das andere Blatt "Sägeliste Drehen", oder muss ganz allgemein gehalten sein. Nur wie erstelle ich ein allgemeingültiges Makro?

dann weise doch den Sheet-Namen einer Variablen zu und verwende die Variable entsprechend:
Option Explicit

Sub FräsenNormal()
  '
  ' FräsenNormal Makro
  '
  Dim strBlatt As String
  '
 
  strBlatt = ActiveWorkbook.ActiveSheet.Name
 
  Cells.Select
  Range("G11").Activate
  With ActiveWorkbook.Worksheets(strBlatt)
     .Sort.SortFields.Clear
     .Sort.SortFields.Add Key:=Range("U2:U3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("C2:C3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("N2:N3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("O2:O3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortTextAsNumbers
     .Sort.SortFields.Add Key:=Range("P2:P3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("Q2:Q3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("R2:R3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     .Sort.SortFields.Add Key:=Range("S2:S3681"), SortOn:=xlSortOnValues, _
     Order:=xlAscending, DataOption:=xlSortNormal
     With .Sort
        .SetRange Range("A1:IX3681")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
     End With
  End With
  Range("A2").Select
End Sub
oder verwende gleich das ActiveSheet:
Option Explicit

Sub FräsenNormal()
   ' 
   ' FräsenNormal Makro 
   ' 
   ' 
   
   Cells.Select
   Range("G11").Activate
   With ActiveWorkbook.ActiveSheet
      .Sort.SortFields.Clear
      .Sort.SortFields.Add Key:=Range("U2:U3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("C2:C3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("N2:N3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("O2:O3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortTextAsNumbers
      .Sort.SortFields.Add Key:=Range("P2:P3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("Q2:Q3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("R2:R3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      .Sort.SortFields.Add Key:=Range("S2:S3681"), SortOn:=xlSortOnValues, _
          Order:=xlAscending, DataOption:=xlSortNormal
      With .Sort
         .SetRange Range("A1:IX3681")
         .Header = xlYes
         .MatchCase = False
         .Orientation = xlTopToBottom
         .SortMethod = xlPinYin
         .Apply
      End With
   End With
   Range("A2").Select
End Sub
Danke für die Unterstützung hier.
Danke Ralf. 
ActiveSheet  :19:

Ich habe die Zeilen per Hand angeglichen und das hat in meiner Testdatei relativ schnell geklappt. 
In den nächsten Tagen muss ich die Makros nochmal neu aufnehmen und bin guter Dinge, dass ich alles nach Wunsch hin bekomme.

Gruß
Jürgen
Seiten: 1 2