Registriert seit: 02.07.2017
Version(en): 2013
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (04.07.2017, 21: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.
Registriert seit: 02.07.2017
Version(en): 2013
12.09.2017, 23:33
(Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2017, 23:45 von WillWissen.
Bearbeitungsgrund: Smilies deaktiviert und Code in Codetags gesetzt
)
(02.07.2017, 20: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
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
13.09.2017, 06:28
(Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2017, 06:28 von Rabe.)
Hi, (12.09.2017, 23: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
Registriert seit: 02.07.2017
Version(en): 2013
13.09.2017, 23:08
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
|