Fortlaufende Nummer bis zu unbestimmter Zelle

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Fortlaufende Nummer bis zu unbestimmter Zelle
von: Patrick
Geschrieben am: 31.07.2015 11:17:27

Hallo alle zusammen!
Ich habe leider ein Problem.
Ich benötige ein Makro um eine Fortlaufende Nummer in Spalte C einzufügen bis zur Letzten befüllten Spalte von D. Außerdem (falls das möglich ist) sollte sich das makro die zuletzt verwendete zahl merken. Um dort weiter zu zählen wo er in einer anderen datei schon war.
Ungefähr so:
Tabelle 1
C d
1000001 Text
1000002 Text
Tabelle 2 (andere Datei
C d
1000003 Text
1000004 Text
Zum Hintergrund ich arbeite mit einem Programm indem ich oft Daten Importieren werden muss und erstelle deswegen Makros um die Csv Dateien in Excel umzumodelieren.
Das hier ist dann hoffentlich das Letzte teil im Puzzle um das Ganze zum Laufen zu bringen.
Für rechtschreibfehler entschuldige ich mich schonmal und Hoffe auf eure Hilfe.
Sorry wegen dem Beispiel dort oben kenne mich hir auf der Seite noch nicht so gut aus!
MFG
Patrick

Bild

Betrifft: AW: Fortlaufende Nummer bis zu unbestimmter Zelle
von: JoWE
Geschrieben am: 31.07.2015 14:25:31
Hallo Patrick,
Teil 1 vllt. so?

Sub setzeWerte()
    lz = Sheets("Tabelle1").Cells(Rows.Count, 4).End(xlUp).Row
    startwert = 1000000
    For ze = 2 To lz
        Sheets("Tabelle1").Cells(ze, 3) = startwert + ze - 1
    Next
End Sub

Deinen Teil 2 musst Du näher erläutern
Gruß
Jochen

Bild

Betrifft: oder so?
von: Michael
Geschrieben am: 31.07.2015 14:37:22
Hi zusammen,
das Makro

Option Explicit
Sub nummern()
Const Datei = "C:\DeinPfad\Nummer.meins"
' .meins, weil das ziemlich sicher von keiner anderen Software verw. wird
Const start_nr = "1000001"
Dim nummerStr As String
Dim zahl As Long
Dim DateiNr As Integer
Dim von As Long, bis As Long, i As Long
Dim zahlen As Variant      ' als Array, damit's fetzt
If Dir(Datei) = "" Then
   DateiNr = FreeFile
   Open Datei For Output As #DateiNr
   Print #DateiNr, start_nr & " "
   Close #DateiNr
   nummerStr = start_nr
   MsgBox "Datei " & Datei & " wurde mit Wert " & start_nr & " erzeugt."
  Else
   DateiNr = FreeFile
   Open Datei For Input As #DateiNr
   Line Input #DateiNr, nummerStr
   Close #DateiNr
End If
MsgBox nummerStr
zahl = Trim(nummerStr) * 1
von = 1       ' ggf. anpassen, falls Überschriften/Leerzeilen
bis = Range("D" & Rows.Count).End(xlUp).Row
zahlen = Range("C" & von & ":C" & bis)
For i = von To bis
 zahlen(i, 1) = zahl + i - 1
Next
Range("C" & von & ":C" & bis) = zahlen
DateiNr = FreeFile
Open Datei For Output As #DateiNr
Print #DateiNr, zahlen(bis, 1) + 1 & " "
Close #DateiNr
End Sub
sieht nach, ob eine Datei mit Zahlenwert existiert und erzeugt sie mit einem als Const definierten Standardwert, falls sie nicht vorhanden ist. "Erzeugt sie" geht aber nur, wenn der Pfad vorhanden ist - den mußt Du halt anpassen auf einen existierenden Ordner.
Die Datei wird ausgelesen, die Spalte C mit fortlaufenden Werten bestückt und die nächsthöhere Zahl wieder in der Datei abgespeichert.
Happy Exceling,
Michael

Bild

Betrifft: AW: Add In Variante
von: Michael (migre)
Geschrieben am: 31.07.2015 15:15:23
Hallo Patrick!
Weil ich gerade selbst etwas ausprobieren musste, hier ein Lösungsversuch als Add In: https://www.herber.de/bbs/user/99215.zip
Add In installieren und dann hast Du in jeder Excel-Mappe (immer in der aktiven Mappe) folgende zwei Möglichkeiten:
[Strg + Umschalt + n] trägt Dir in Spalte C bis zur letzten gefüllten Zelle von D eine fortlaufende Nummer ein (Ausgangsbasis ist 1000000).
[Strg + Umschalt + b] setzt die Ausgangsnummer auf 1000000 zurück.
Die letzte gesetzte fortlaufende Nummer wird jeweils (im Add In) gespeichert.
Gib Bescheid ob's klappt und passt! Wie gesagt, ist ein schneller Test, gewinnt sicher keinen Programmier-Preis ;-); könnte aber reichen.
LG
Michael

Bild

Betrifft: AW: Fortlaufende Nummer bis zu unbestimmter Zelle
von: Patrick
Geschrieben am: 03.08.2015 08:08:36
Hallo,
Als erstes vielen Dank für eure Hilfe! :D
Und sorry das meine Antwort erst so spät kommt.
Ich habe jetzt das Add In Benutzt und es Funktioniert Super!
Nochmal vielen vielen Dank!
LG
Patrick

Bild

Betrifft: AW: Gerne, Danke für die Rückmeldung, owT
von: Michael (migre)
Geschrieben am: 03.08.2015 10:06:48
.

Bild

Betrifft: AW: Gerne, Danke für die Rückmeldung, owT
von: Patrick
Geschrieben am: 03.08.2015 10:27:30
Tut mir leid das ich das Thema wieder öffne, aber das add in funktioniert bei mir das erste mal beim einfügen dann nicht mehr.
Habe es in das VBAProject(PERSONAL.XLSB) kopiert doch ab da funktioniert es nicht mehr und gibt folgenden fehler aus:
Laufzeitfehler 9: Index außerhalb des Bereichs
Hier der Code:

  • 
    Sub LfdNummerSetzen()
    'Trägt in Spalte C in jede Zelle ab Zeile 1 eine fortlaufende Nummer ein, bis zur letzten gefü _
    llten
    'Zelle in Spalte D (aktives Blatt)
        Dim Start As Long: Start = ThisWorkbook.Worksheets("MyTestTab").Range("StartCounter").Value
        Dim leZeile As Long
        Dim i As Long
        Dim j As Long
        
        leZeile = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
        
        Application.ScreenUpdating = False
        
        j = Start
        For i = 1 To leZeile
            ActiveWorkbook.ActiveSheet.Cells(i, 3).Value = j
            j = j + 1
        Next
        
        ThisWorkbook.Worksheets("MyTestTab").Range("StartCounter").Value = j
        
        Application.ScreenUpdating = True
        
    End Sub

  • Und die fehlerzeile ist:
    Start = ThisWorkbook.Worksheets("MyTestTab").Range("StartCounter").Value
    Ich denke der Fehler wird "ThisWorkbook.Worksheets sein.
    Habe ("MyTestTab") auch schon auf Tabelle1 und Sheet1 geändert und ThisWorkbook auch auf ActiveWorkbook geändert.
    Habe leider keine Ahnung was ich ändern muss. Habe auch versucht mir Infos über den Befehl zu Holen habe in aber nie so im Internet gefunden.
    Hoffe nochmal auf eure Hilfe!
    LG
    Patrick

    Bild

    Betrifft: AW: Sorry habe Vergessen den Betreff zu ändern
    von: Patrick
    Geschrieben am: 03.08.2015 10:30:25
    Habe leider Vergessen den Betreff auf Laufzeitfehler 9 zu ändern

    Bild

    Betrifft: AW: Sorry habe Vergessen den Betreff zu ändern
    von: Daniel
    Geschrieben am: 03.08.2015 10:41:26
    Hi
    ThisWorbook ist die Datei, in welcher sich der Code befindet.
    ActiveWorkbook ist die Datei, die gerade aktiv ist.
    der Fehler kommt, wenn das Tabellenblatt "MyTestTab" in der angesprochenen Datei nicht vorhanden ist.
    Gruss Daniel

    Bild

    Betrifft: AW: Nun anderer Fehler
    von: Patrick
    Geschrieben am: 03.08.2015 11:09:40
    Hallo Daniel,
    Danke für deine schnelle Antwort habe die Problemzeile nun in das geändert:
    Start = ActiveWorkbook.Worksheets("Tabelle1").Range("StartCounter").Value
    Tabelle1 deswegen weil ich eine komplett neue Datei aufmache befor ich die daten einfüge und die makros darüberlaufen.
    Der neue Fehler ist 1004 Anwendungs- oder Objektdefinierter Fehler
    Hoffe ich nerve nicht zu sehr kenne mich halt sehr schlecht aus.
    LG
    Patrick

    Bild

    Betrifft: AW: Da bin ich nicht unschuldig...
    von: Michael (migre)
    Geschrieben am: 03.08.2015 11:33:19
    Patrick,
    ...dass es jetzt bei Dir zu Fehlern kommt - ich hab Dir halt auch wenig Erklärung mitgeliefert. Bitte entschuldige. Du hast das Add In im Endeffekt anders genutzt, als es gedacht war (bzw. als ich aus Deiner Anfrage verstanden habe).
    "StartCounter" ist ein definierter Name der sich auf Zelle A1 des Tabellenblattes "MyTestTab" des Add In bezieht. Ein Add In ist im Grunde eine Excel-Arbeitsmappe, die ausgeblendet ist. Ich nutze daher das Tabellenblatt der ausgeblendeten Arbeitsmappe um den Zähler der laufenden Nummer dort zu speichern.
    Du schreibst, dass Du den Code in Deine persönliche Makro-Arbeitsmappe kopiert hast. Das ist aber nicht notwendig. Speichere mein Add in an einem beliebigen Speicherort. Öffne Excel, Menüband, Register "Entwicklertools" (wenn nicht vorhanden über Optionen einblenden), Add ins. Klicke auf "Durchsuchen..." und begib Dich zum Speicherort des Add ins, Add in auswählen und OK. In der Liste der verfügbaren Add Ins dann ggf. noch sicherstellen, dass "Mytest" angehakt ist.
    Ab diesem Zeitpunkt wirkt mein Makro immer in der "aktiven Tabelle" - mit den Tastaturbefehlen, die ich Dir geschrieben habe.
    In Spalte D müssen natürlich Daten vorhanden sein, damit in Spalte C die fortlaufende Zahl eingetragen wird - es ging ja um das Spaltenende von D.
    Habe es jetzt bei mir getestet - im Grunde funktioniert es, wie geplant. Auch bei mehreren Tabellenblättern in einer oder mehreren Mappen. Wenn Du allerdings eine neue Instanz von Excel öffnest, steht dort das Add in nicht zur Verfügung (also wenn Du eine neue Mappe nicht über zB [Strg + N] öffnest oder über das Menüband-Symbol, sondern bspw. nochmal Excel startest).
    Hilft Dir das schon mal weiter?
    LG
    Michael

    Bild

    Betrifft: AW: Aso
    von: Patrick
    Geschrieben am: 03.08.2015 12:18:35
    Hallo Michael,
    Bin nie davon ausgegangen (wollte es auch nicht andeuten) das du schuld bist.
    Danke für deine erklärung und sorry dafür das meine Problemerklärung ganz am anfang doch nicht gut war.
    Funktioniert jetzt einwand frei.
    Nochmals sorry für die Umstände und vielen dank für die Hilfe.
    LG
    Patrick

    Bild

    Betrifft: AW: Super, da bin ich froh...
    von: Michael (migre)
    Geschrieben am: 03.08.2015 12:23:26
    Hallo Patrick,
    ...dass es nun für Dich, wie gewünscht, funktioniert.
    Bin nie davon ausgegangen (wollte es auch nicht andeuten) das du schuld bist.
    Das hab ich auch so nicht verstanden - aber ich hab es für mich so gesehen, weil ich Dir nicht gleich eine genauere Info geliefert habe.
    Danke für die Rückmeldung!
    LG
    Michael

     Bild

    Beiträge aus den Excel-Beispielen zum Thema "Fortlaufende Nummer bis zu unbestimmter Zelle"