Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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

Algorithmus Zähler in mehreren Ebenen

Algorithmus Zähler in mehreren Ebenen
01.06.2016 08:58:06
Bernd
Hallo Forumsmitglieder,
ich habe ein kleines Problem bei der Anlage einer Ordnerstruktur mit enthaltener Nummerierung. Mit der angehangene Datei

Die Datei https://www.herber.de/bbs/user/105897.xlsm wurde aus Datenschutzgründen gelöscht


kann ich mir eine Ordnerstruktur aufbauen.
Den Code habe ich teilweise aus dem Internet und teilweise selbst gebastelt.
Mein Problem besteht nun darin, dass ich jedem anzulegenden Ordner eine Nummer voranstellen möchte. Durch die Nummerierung lassen sich die Ordner beim navigieren über den Explorer besser sortieren und man kann den Kollegen kurz sagen "gehe in Ordner ...01...03...12...03..."
Leider schaffe ich es nicht, dass er mir mit jeder tieferen Ebene immer wieder den Counter auf 0 bzw. 1 zurücksetzt :-(
In der Datei ist ein Sheet mit meinem "Soll", damit man es sich optisch einigermaßen vorstellen kann.
Kann mir bitte jemand helfen?
Danke und Grüße, Bernd

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

Betreff
Datum
Anwender
Anzeige
AW: Algorithmus Zähler in mehreren Ebenen
01.06.2016 16:49:07
Christian
Hallo Bernd,
so zB.
Option Explicit
Sub TestIt()
Dim lngLR As Long
Dim lngFldr() As Long
Dim strFldr() As String
Dim i As Long, j As Long, k As Long
Dim blnFnd As Boolean
Const COLMAX As Long = 5
Const COLRES As Long = 7
ReDim lngFldr(1 To COLMAX)
ReDim strFldr(1 To COLMAX)
With Sheets("Test")
lngLR = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
.Cells(5, COLRES).Resize(lngLR, 4).ClearContents
For i = 5 To lngLR
blnFnd = False
For j = 1 To COLMAX
If .Cells(i, j)  "" Then
blnFnd = True
lngFldr(j) = lngFldr(j) + 1
strFldr(j) = "\" & Format(lngFldr(j), "00") & "_" & .Cells(i, j)
If j = 1 Then
strFldr(j) = .Cells(2, 1) & strFldr(j)
End If
For k = j + 1 To COLMAX
lngFldr(k) = 0
strFldr(k) = ""
Next
End If
Next
If blnFnd Then
For j = 1 To COLMAX
If lngFldr(j) = 0 Then Exit For
.Cells(i, COLRES) = .Cells(i, COLRES) & strFldr(j)
Next
End If
Next
End With
End Sub
Gruß
Christian

Anzeige
Algorithmus Zähler in Unterordnern
01.06.2016 17:02:23
Michael
Hi Bernd,
das geht z.B. so:
Option Explicit
'In VBA muß man jede Variabel EINZELN deklarieren; mehrere mit , getrennte
'sind zunächst immer VARIANT;
'es geht auch die Kurzschreibweise & = as long bzw. $ = as string
'Dim maxzeile, maxspalte, ae, i, j, Counter As Long
'Dim Pfad, strpath As String
Dim maxzeile&, maxspalte&, ae&, i&, j&, Counter&
Dim Pfad$, strpath$
Dim ws As Worksheet
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) _
As Long
Sub Pfade_anlegenMichael()
Dim a As Variant, e&(), eS$(), au As Variant
Dim z&, s& 'z wie Zeile, s wie Spalte
'das werden bzw. sind Arrays
Sheets("Test").Activate
maxzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If maxzeile  "\" Then Pfad = Pfad & "\"
a = Range("A5").Resize(maxzeile - 4, maxspalte)
au = Range("G5:G" & maxzeile)
ReDim e(1 To 1, 1 To maxspalte)
ReDim eS(1 To 1, 1 To maxspalte)
For z = 1 To maxzeile - 4
s = 0
For i = 1 To maxspalte
If a(z, i)  "" Then
s = i
e(1, i) = e(1, i) + 1
eS(1, i) = Format(e(1, s), "00") & "_" & a(z, i)
Else
If s > 0 Then e(1, i) = 0: eS(1, i) = ""
End If
Next
a(z, s) = Format(e(1, s), "00") & "_" & a(z, s)
au(z, 1) = Pfad
For i = 1 To s
au(z, 1) = au(z, 1) & eS(1, i) & "\"
Next
Next
Range("A5").Resize(maxzeile - 4, maxspalte) = a
Range("G5:G" & maxzeile) = au
End Sub
Das Makro läuft NICHT mit Leerzeilen, also bitte: lösche die leeren Zeilen 26 und 27 raus, sonst müßte man extra noch eine Abfrage einbauen.
Datei mit einer Spalte mehr (testhalber): https://www.herber.de/bbs/user/105911.xlsm
Schöne Grüße,
Michael

Anzeige
AW: Algorithmus Zähler in Unterordnern
02.06.2016 15:27:58
Bernd
Servus,
ihr seid beide genial! Beide Varianten funktionieren einwandfrei!
Ich musste mich jetzt für eine eurer beiden Varianten entscheiden und hab einfach mal die letzte von Michael rausgepickt. Funktioniert perfekt!
Wenn`s nicht zu aufdringlich ist hätte ich jedoch noch eine Frage/Bitte:
Der letzte Unterordner eines jeden Ordnerblockes wird als "Archiv" angelegt; die Nummernzuweisung wäre im Idealfall die "99". Kann man das noch über den Code aufnehmen?
Also z.B.
=> 01_Ebene1_Ordner1
=> 01_Ebene2_Ordner1
=> 02_Ebene2_Ordner2
=> 99_Ebene2_Archiv
=> 99_Ebene1_Archiv
Ich hoffe ihr versteht was ich meine.
Nochmals vielen vielen Dank!
Grüße, Bernd

Anzeige
AW: Algorithmus Zähler in Unterordnern
02.06.2016 18:34:10
Michael
Hi zusammen,
die Algorithmen von Christian und mir fußen ja auf der gleichen Idee.
Hm, das "Archiv": sehe ich das richtig, daß Du diesen Begriff händisch eingibst, also statt "Ordner2" oder so einfach "Archivxxx"?
Das vorausgesetzt habe ich die Datei angepaßt: https://www.herber.de/bbs/user/105942.xlsm
Schöne Grüße,
Michael

AW: Algorithmus Zähler in Unterordnern
03.06.2016 14:17:38
Bernd
Hallo Michael,
absolut perfekt!
Vielen vielen Dank an alle Beteiligten
Grüße, Bernd

na fein, danke für die Rückmeldung & Gruß
04.06.2016 15:51:11
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige