Fotlaufende Nummerierung und Tabelenname (VBA)

ulrich, Sonntag, 24.01.2016, 19:09 (vor 1417 Tagen)

Hallo Kmunity, kann jemand helfen?
Ich habe eine Excel Arbeitsmappe , die aus bis zu 100 Tabellenblättern besteht. Sheet1, Sheet2, Sheet3, ..... Sheet100. Jedes Tabellenblatt soll in der Zelle A1 eine fortlaufende Nummer erhalten: 1, 2, 3, ... 100. Diese Nummer soll gleichzeitig der Name des Tabellenblattes mit vorangestelltem Wort "Protokoll" werden, d.h. unten auf der Registerfahne soll später "Protokoll 1, Protokoll 2, als fortlaufende Nummer stehen, die auch in Zelle A1 des jeweiligen Tabellenblattes steht.
In der nächsten Arbeitsmappe sind dann die nächsten Tabellenblätter von 101, 102, 103, ... 200. In der 3. Arbeitsmappe sind dann die nächsten Tabellenblätter von 201, 202, 203, ... 300. usw. Ich muss also erreichen, das wenn ich im 1. Tabellenblatt in Zelle A1 irgend eine Zahl eingebe, zum Beispiel 1312, das dann am Ende das letzte Blatt eine 1411 in Zelle A1 stehen hat und die Tabellenblätter auch von Protokoll 1312 bis Protokoll 1411 benannt sind.
Da ich nicht von Hand in den 100 Tabellen immer nächst höhere Zahl schreiben will suche ich nach einer Möglichkeit, mit der ich es erreiche, dass automatisch alle 100 Tabellen umbenannt werden. Ich denke, dass dies nur über eine Makro lösbar ist. Ich bin aber nicht geübt mit Excel, um dies selber zu erstellen, geschweige denn es mit VBA zu machen. Vielleicht gibt es sogar eine Excel Formel, welche man jeweils in die Zelle A1 im 1. Tabellenblatt eingibt, welche danach automatisch die anderen 99 Tabellenblätter umbenennt.
Meine Ersten Versuche, soweit wie ich im Internet recherchiert habe, haben mir zwar das Ergebnis geliefert, aber wenn ich die Werte von "For = 101 To 200" ändere, passiert nix. Bei der angezeigten Formel meckert der Debugger zwar auch, aber er führt das Makro erst einmal aus.

Fortlaufende Nummerierung und Tabellenname
Modul 1 (die Formel habe ich aus einem Forum übernommen und leicht abgewandelt)

Sub Protokollnummern()
Dim b As Integer
Application.ScreenUpdating = 0
For b = 1 To 100
Sheets(b).Name = "Protokoll " & b '+1
Sheets(b).[AH6] = b
Next
End Sub

Viele Dank.

Fotlaufende Nummerierung und Tabelenname

Martin Asal @, Montag, 25.01.2016, 08:26 (vor 1416 Tagen) @ ulrich

Hallo Ulrich,


versuche es mal damit:

Sub Protokollnummern(Start As Integer)
  Dim b As Integer
    Application.ScreenUpdating = False
  For b = 1 To Sheets.Count
    Sheets(b).Name = "Protokoll " & b + Start - 1
    Sheets(b).[A1] = b + Start - 1
  Next
    Application.ScreenUpdating = True
End Sub

Damit kannst du z.B. mit Protokollnummern 101 das Gewünschte erreichen.

Anhand deiner Beschreibung, wonach du hunderte von identisch aufgebauter Tabellenblättern brauchst, bezweifle ich allerdings ernsthaft, dass Excel das richtige Programm für deine Zwecke ist. Das schreit geradezu nach einer kleinen Datenbank wie z.B. Access.

Martin

Fotlaufende Nummerierung und Tabelenname

ulrich, Dienstag, 26.01.2016, 11:38 (vor 1415 Tagen) @ Martin Asal

Hallo Martin,
erst einmal vielen Dank für Deine Antwort und Hilfsbereitschaft.
Du hast mit Access völlig recht, aber im Moment muss ich das Problem kurzfristig
knacken, da wir noch im Aufbau der Abteilung sind. Ich denke wir werden in einem halben Jahr auch mit Praxisorientierter Software arbeiten, wo dann auch Datenbanksysteme zum Einsatz kommen. Da ich zu wenig Erfahrung mit Excel und Access
habe um nicht zu sagen fast keine, muss ich mich erst einmal da ran arbeiten.

Mit der von Dir vorgeschlagenen Variante werde ich es mal probieren, melde mich dann, o es funktioniert hat.

Danke, Ulrich

Fotlaufende Nummerierung und Tabelenname

ulrich, Mittwoch, 27.01.2016, 00:36 (vor 1414 Tagen) @ ulrich

Hallo Martin,
hat nicht so funktioniert wie erwartet, zumal nun das erste Protokoll mit 0 anstatt mit 1 beginnt. Jedoch habe ich das Problem anders gelöst, indem ich die Arbeitsblätter von 3 Arbeitsmappen in die eine Arbeitsmappe zusammengeführt habe und dann im Makro von 1 To 100 auf 1 To 500 geändert habe. Beim Durchlauf hat er alle Arbeitsblätter und die Protokolle sauber durchnummeriert. Also das Problem ist ersteinmal gelöst.

Nun kommt das nächste zu lösende Problem!
In einer Zelle z.B. D5 steht ein Kurzzeichen aus 3 Buchstaben, z.B. mon für Monitor oder com für Computer oder ver für Verteiler. In allen 500 Arbeitsblättern sollen nun diese Kürzel gegen den Vollbegriff ersetzt werden. Da weiß ich nicht mal ansatzweise wie ich das jetzt hinbekommen kann. Eventuell kannst Du mir dabei helfen?

Danke, Ulrich

Fotlaufende Nummerierung und Tabelenname

Martin Asal @, Mittwoch, 27.01.2016, 09:02 (vor 1414 Tagen) @ ulrich

hat nicht so funktioniert wie erwartet

Dann hast du etwas falsch gemacht, bei mir klappt es einwandfrei. Hier noch mal im Detail, was zu machen ist:

  • Öffne deine Datei, starte den VBA-Editor (Alt-F11)
  • Erstelle mit Einfügen/Modul ein neues Modul
  • Kopiere dort die Prozedur hinein, die ich gepostet habe
  • Öffne nun das Direktfenster und gib "Protokollnummern 101" ein (anstelle von "101" eben die Nummer, mit der das Ganze starten soll.

Martin

Fotlaufende Nummerierung und Tabelenname

Martin Asal @, Mittwoch, 27.01.2016, 09:03 (vor 1414 Tagen) @ ulrich

Nun kommt das nächste zu lösende Problem!

Hier gilt: Eine Frage, ein Thread! Das nächste Mal also bitte berücksichtigen.

In einer Zelle z.B. D5 steht ein Kurzzeichen aus 3 Buchstaben, z.B. mon für Monitor oder com für Computer oder ver für Verteiler. In allen 500 Arbeitsblättern sollen nun diese Kürzel gegen den Vollbegriff ersetzt werden

Falls Du dich wirklich darauf verlassen kannst, dass es garantiert immer D5 ist, hilft die folgende Prozedur:

Sub Vervollständige()
  Dim sheetNr As Integer
 
  Application.ScreenUpdating = False
 
  For sheetNr = 1 To Sheets.Count
    Select Case Sheets(sheetNr).[D5]
        Case "mon"
            Sheets(sheetNr).[D5] = "Monitor"
        Case "ver"
            Sheets(sheetNr).[D5] = "Vertrag"
    End Select
  Next
 
  Application.ScreenUpdating = True
End Sub
 


Hier ist nur "mon" und "ver" eingebaut. Weitere Kürzel musst du noch selbst vervollständigen. Und wenn sich jemand verschrieben hat, oder "Mon" statt "mon", oder vielleicht noch zusätzliche Buchstaben/Leerzeichen in D5 eingefügt hat, wird nichts an der Zelle verändert. Es wird ebenfalls nicht funktionieren, wenn ausnahmsweise mal der Wert nicht in D5, sondern einer anderen Zelle steht.

Deswegen nochmals ausdrücklich der Hinweis: Mit deinem "nur mal schnell provisorisch was in Excel hinknallen" reißt du dich ganz schnell in die Sch... Damit würde ich gar nicht erst anfangen, sondern es gleich richtig machen.

Martin

Fotlaufende Nummerierung und Tabelenname

ulrich, Donnerstag, 28.01.2016, 00:22 (vor 1413 Tagen) @ Martin Asal

Hallo Martin,

"Eine Frage, ein Thread", Entschuldigung, Anfängerfehler!

Mit den Protokollnummern ab 101 hab ich noch nicht hinbekommen, muss ich dann noch einmal in Ruhe mit einer neuen Arbeitsmappe versuchen.

Mit dem Vervollständigen hat sofort super funktioniert.

Danke nochmals für die schnelle Hilfe. Ich werde jetzt mal versuchen mich in Access einzulesen und einzuarbeiten, um zukünftig von Anfang an den richtigen Weg zu gehen.

Ulrich

RSS-Feed dieser Diskussion
powered by my little forum