Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortierung Sheets per VBA

Sortierung Sheets per VBA
26.07.2021 14:23:03
Eve
Hallo alle zusammen,
ONUR hat hier im Forum einen Code eingebracht, mit dem man Sheets, die nach Datum benannt sind, nach dem Datum sortieren kann. Wie verhält sich das bei Tabellenblättern, die neben den Datumsbennenungen auch andere Benennungen haben (zB Daten). Derzeit werden diese an das Ende angehängt.
Besteht die Möglichkeit den Code dahingehend abzuändern, dass man diese Blätter an den Anfang sortiert uind erst danach die Datumsblätter anhängt?
Option Explicit

Public Sub SheetSort()
Dim anz, n, min, v, mi, x
anz = ThisWorkbook.Sheets.Count
For x = 1 To anz
min = 99999
For n = x To anz
If IsDate(Sheets(n).Name) Then
v = CLng(CDate(Sheets(n).Name))
If v 

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierung Sheets per VBA
26.07.2021 17:23:19
Yal
Hallo Eve,
der Kollege Onur hat wohl Urlaub...
Am einfachste den BubbleSort-Algorythmus anwenden ( https://de.wikipedia.org/wiki/Bubblesort )

Sub SheetSort()
Dim N, i
For N = Sheets.Count To 1 Step -1
For i = 1 To N - 1
If Sheets(i).Name > Sheets(i + 1).Name Then Sheets(i + 1).Move Before:=Sheets(i)
Next
Next
End Sub
VG
Yal
AW: Sortierung Sheets per VBA
26.07.2021 17:31:09
Eve
Hallo yal,
danke für Deinen Code. Der sortiert zwar, allerdings auch nur die Datumsblätter wieder an den Anfang. Ich würde aber gerne die Datumsblätter ans Ende setzen..... Blatt1 - Blatt2 - Blatt3 - 24.05.21 - 25.05.21....
Anzeige
AW: Sortierung Sheets per VBA
26.07.2021 17:48:52
Yal
Hallo Eve,
diesen Wunsch könnte ich natürlich nicht aus deiner Beschreibung entnehmen.

Sub SheetSort()
Dim N, i
Dim LetzteNichtDatum As String
'sortiere
For N = Sheets.Count To 1 Step -1
For i = 1 To N - 1
If Sheets(i).Name 
VG
Yal
AW: Sortierung Sheets per VBA
26.07.2021 18:16:51
Eve
Hallo Yal,
ich nochmal. Also jetzt werden zwar die Datums-Tabellenblätter an das Ende sortiert, allerdings nicht in Reihenfolge des Datums.
Sortiert wird nun: .Blatt 1, Blatt2, Blatt3, 26.07.2021, 28.01.2021, 27.07.2021.
Es sollte aber der 28.01.2021 vor dem 26.07.2021 logischerweise sein: Blatt 1, Blatt2, Blatt3, 28.01.2021, 26.07.2021, 27.07.2021
Weiß Du da vl. noch Rat?
Anzeige
AW: Sortierung Sheets per VBA
26.07.2021 18:52:39
Yal
Hallo Eve,
am Ende komme ich doch auf mein ursprüngliche Idee, dass man mit PseudoName vergleichen sollte...

Sub SheetSort()
Dim n, i
'sortiere
For n = Sheets.Count To 1 Step -1
For i = 1 To n - 1
If PseudoName(Sheets(i).Name) > PseudoName(Sheets(i + 1).Name) Then
Sheets(i + 1).Move Before:=Sheets(i)
End If
Next
Next
End Sub
Private Function PseudoName(BlattName As String) As String
PseudoName = BlattName
If IsDate(BlattName) Then PseudoName = "zzzzz" & CLng(CDate(BlattName))
End Function
Zur Erklärung: wenn ein Blattname ein Datum ist, wird es in einem "zzzzz44403" konvertiert, aber nur um den Vergleich zu machen.
44403 ist übrigens heute (26.07.2021). Morgen wäre +1: 44404. Und in 41 Tage haben wir 44444 (5. Sept)!
VG
Yal
Anzeige
AW: Sortierung Sheets per VBA
26.07.2021 19:02:46
Eve
Yal,.... Du bist Spitze!
Vielen lieben Dank, das hat funktioniert!
Nochmal vielen Dank für deine Bemühungen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige