Identische Suchabfrage auf mehreren Tabellenblätern *Neuling*
#1
Hallo zusammen !

Frisch angemeldet, aber hier schon des öfteren als Besucher reingeschaut :) Tolles Forum :)

Nun habe ich ein Problem, bei dem ich hier im Forum nichts zu finde, oder auch vielleicht es einfach nicht verstehe. Ich bin ein absoluter Excel Noob, alles was ich "kann" ist selbst beigebracht, daher habt bitte Nachsicht mit mir :)

Nun endlich zu Frage:

Ich habe einen Terminplaner für meine kleine Firma entworfen. Dort gibt es 2 Button die ein Makro auslösen sollen, jedes mal ein Sortiermakro (siehe unten). Der Terminkalender ist so aufgebaut, das jedes Tabellenblatt ein Tag ist, also das erste heisst 02.01.2017 Montag, dass zweite 03.01.2017 Dienstag und so weiter. Hier liegt auch das Prob.

Das Sortiermakro funktioniert nur im ersten Blatt, warum weis ich, aber wie ich es abstellen kann nicht. Könnt Ihr mir bitte helfen ?

Das Makro sieht so aus

Zitat:Sub SortAblauf()
'
' SortAblauf Makro
'
'
    Range("A11:Y43").Select
    ActiveWindow.LargeScroll Down:=-1
    Range("A11:Y43").Select
    ActiveWindow.SmallScroll Down:=-33
    ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort.SortFields.Add Key:=Range _
        ("I11:I43"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort
        .SetRange Range("A11:Y43")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A11").Select
End Sub


Dann noch eine Frage, Mods verzeiht falls dies hier nicht erlaubt ist.

Ich würd gerne den Terminplaner etwas "Professioneller" gestalten, das heisst auch, vereinfachen.
Derzeit kopiere ich das erste Tabellenblatt 365 mal, umbenenne jedes einzelne und dann muss ich auch noch in jedem Blatt Formeln abändern. Dies ist sehr zeitaufwendig, aber wie gesagt, ich kann es nicht anders.
Gibt es hier Excel "Profis" die via TS oder ähnlich helfen ?

Vielen Dank vorab  !

Gruß

Spoon
Top
#2
Hallo Spoon,

bei 365 Blättern ist das eine Menge Aufwand.
Wäre folgender Ansatz nicht evtl. etwas einfacher:
Alle Termine in eine Tabelle. Über einen Button oder dann auch den AUtofilter, wählst Du einen Zeitraum aus und kannst diesen dann drucken oder in ein anderes Blatt kopieren, oder, oder?
Auch ein Makro, das über 365 Blätter läuft, wird Zeit benötigen.

Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • Spoon1975
Top
#3
Hallo,

Deine Sortierroutine kann nur im ersten Tabellenblatt funktionieren, da Du dies explicit so festgelegt hast:

ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort.SortFields.Add Key:=Range _
        ("I11:I43"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("02.01.2017 Montag").Sort

im Übrigen kann ich auch nur sagen, dass es ziemlich daneben ist, 365 Tabellen für diese Aufgabe zu erstellen! Hier kann ich nur dazu raten: Googeln und fertige Lösungen adaptieren oder übernehmen!

Und wenn Du Profi-Hilfe brauchst, dann kostet das wohl auch!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Spoon1975
Top
#4
Danke Euch beiden für die Antworten

@Ich
ne, so ist es meiner Meinung nach einfacher für den Nutzer des Terminplans.

@BoskoBiati

@Fehler
Das ich weis wo der Fehler liegt habe ich geschrieben ! Leider fehlt mir das Wissen das "(02.01.2016 Montag)" durch solch eine "Variable" !!?? zu ersetzen, dass das sortieren eben nicht nur im dem Blatt geht ! Mit was muss ich das Fett gedruckte ersetzen das es eben in jedem Blatt geht ?

@Geld für Profis
ich habe nie gesagt/geschrieben das ich nichts zahlen will !

@ziemlich Daneben
sry das ich nicht Dein Wissen ?!? habe, ich werd mal weiter Google fragen

Trotzdem Danke für Deine Hinweise.
Top
#5
Hallo,

da habe ich was überlesen.

ungetestet:

Code:
Sub SortAblauf()

dim sh as sheets
with activeWorkbook
for each .sh in .sheets

.sh.Sort.SortFields.Clear
    .sh.Sort.SortFields.Add Key:=Range _
        ("I11:I43"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    .sh.Sort

next

        .SetRange Range("A11:Y43")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A11").Select
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Spoon1975
Top
#6
Hallo Edgar,

Danke !!

Leider kommt ein Fehler, der lautet: "Fehler beim Kompilieren" "Variable erforderlich-Zuweisung an diesen Ausdruck nicht möglich". Das "For Each .sh In .Sheets" im Code wird dann blau markiert.

Ich habe meinen Code durch Deinen komplett ersetzt, hoffe das war richtig.

EDIT: Halt ! Melde mich sofort wieder......
EDIT2: Dachte hätte nicht den ganzen Code kopiert, war aber nicht so. Fehler bleibt
Top
#7
Hallo,

ersetze die Dim Anweisung durch diese:


Code:
Dim sh as Worksheet
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Spoon1975
Top
#8
Hilft leider auch nicht, Fehler bleibt, gleiche Stelle im Code wird blau markiert.
Top
#9
Quick and dirty und ohne Optimierung und ungetestet:

Code:
Sub SortAblauf()
Dim ws As Worksheet
' SortAblauf Makro
'
'

For Each ws In Worksheets
   ws.Range("A11:Y43").Select
   ActiveWindow.LargeScroll Down:=-1
   ws.Range("A11:Y43").Select
   ActiveWindow.SmallScroll Down:=-33
   ws.Sort.SortFields.Clear
   ws.Sort.SortFields.Add Key:=Range _
       ("I11:I43"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
       xlSortNormal
   With ws.Sort
       .SetRange Range("A11:Y43")
       .Header = xlGuess
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
   ws.Range("A11").Select
Next ws
End Sub


Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • Spoon1975
Top
#10
Hallo Ich, vielen Dank, aber auch hier kommt ein Fehler:

Laufzeitfehler 1004: Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden
und dies steht im Code dann in Gelb:

ws.Range("A11:Y43").Select
Top


Gehe zu:


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