Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fortlaufende Nummern vergeben

Fortlaufende Nummern vergeben
26.03.2006 19:12:33
Andreas
Hallo Forum,
Ich möchte beim Öffnen einer Rechnungsvorlage Automatisch immer die nächste Rechnungsnummer angegeben haben. Es wird aber nicht die Vorlage gespeichert sondern das ausgefüllte rechnungsformular. Wie kann ich es daher anstellen, das ich beim öffnen der Vorlage immer die nächste Rechnungsnummer angezeigt bekomme. Wie gesagt, die vorlage bleibt immer gleich, gespeichert wird nur das ausgefüllte Formular, bei diesem sollte sich die rechnungsnummer beim neuerlichen öffnen nicht mehr ändern.
ich danke für euere hilfe
gruß
andreas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortlaufende Nummern vergeben
26.03.2006 19:34:21
Uwe
Hi Andreas,
prinzipiell geht das mit diesem Code im Modul der Arbeitsmappe:


Private Sub Workbook_Open()
Sheets("Tabelle1").Range("A1").Value = Range("A1").Value + 1
ActiveWorkbook.Save
End Sub


Ist das das was Du suchst?
Gruß
Uwe
(:o)
AW: Fortlaufende Nummern vergeben
26.03.2006 20:01:15
Andreas
hallo Uwe,
Ja Danke, es funktioniert. jedoch wenn ich die rechnung unter namen abspeichere, und wieder öffne, dann ändert sich wieder die rechnungsnummer, das sollte nicht sein. vielleicht kannst mir da auch noch helfen.
in der vorlage funkt es so wie ich es haben wollte danke.
wenn jetzt nach dem abspeichern unter dem namen die rechnungsnummer bei neuerlichen öffen bleibt, ist alles wunderbar.
gruß
andreas
Anzeige
AW: Fortlaufende Nummern vergeben
26.03.2006 20:45:15
Uwe
Hi Andreas,
daran hatt ich nicht gedacht.
So sollte es besser klappen:


Private Sub Workbook_Open()
If Me.Name = "Vorlage.xls" Then
   Sheets("Tabelle1").Range("A1").Value = Range("A1").Value + 1
   ActiveWorkbook.Save
End If
End Sub


Du musst nur das "Vorlage.xls" durch den richtigen Namen Deiner Vorlage ersetzen.
OK so?
Gruß
Uwe
(:o)
Anzeige
AW: Fortlaufende Nummern vergeben
26.03.2006 21:05:45
Andreas
Hallo Uwe
Recht herzlichen Dank. funktioniert einwandfrei. so wie es soll.
Danke nochmals.
Würde das in einer Arbeitsmappe wo mehrere Tabellen sind auch funktionieren?
wenn man bei der offenen Arbeitsmappe die Tabelle öffnet nur dann in der tabelle die nummer erhöht wird?
leider kenn ich mich mit VBA nicht so gut aus wie du.
gruß
andreas
AW: Fortlaufende Nummern vergeben
26.03.2006 21:56:18
Uwe
Hi Andreas,
jetzt wird's etwas komplizierter. Ich schick mal meine Testdatei mit:
https://www.herber.de/bbs/user/32285.xls
(habe gerade erschreckt festgestellt das das so nicht läuft. Du musst die Datei entweder als Vorlage.xls abspeichern oder im Tabellenblattmodul das Vorlage.xls durch 32285.xls ersetzen. Kann ich leider nicht, weil ich nicht weiß welche Nummer das Forum vergeben wird)
Du müsstest den alten code im Modul DieseArbeitsmappe löschen und ersetzen durch:


Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
End Sub


Dann fügst Du im Modul von z.B. Tabelle2 ein:


Private Sub Worksheet_Activate()
If ActiveWorkbook.Name = "Vorlage.xls" Then
   Sheets("Tabelle2").Range("A1").Value = Range("A1").Value + 1
   ActiveWorkbook.Save
End If
End Sub


Das hat jetzt den Effekt, dass die Datei beim Öffnen immer die Tabelle1 zeigt. Das wäre für mich so eine Art Startblatt, auf dem noch keine Rechnungsnummer erscheint. Wenn man dann Tabelle2 auswählt, wird automatisch die Nummer in A1 hochgezählt. Du kannst diesen Code auch in weitere Blätter Kopieren, dann nur Tabelle2 durch den richtigen Blattnamen ersetzen. Oder ersetz Sheets("Tabelle2").Range.... durch ActiveSheet.Range....
Das passt dann zu jedem Blatt.
Bringt Dich das weiter?
Gruß
Uwe
(:o)
Anzeige
AW: Fortlaufende Nummern vergeben
26.03.2006 22:03:41
Ramses
Hallo
Dann musst du aber sicherstellen, dass beim ersten öffnen die Vorlage gleich wieder gelöscht wird :-)
Ein wiederholtes öffnen der Vorlage führt dann zwangsläufig zu falschen Nummern.
Ein Speichern der Datei unter einem andern Namen muss ebenfalls verhindert werden.
Rechnungsnummern haben den unangenehmen Nebeneffekt, dass sie nur EINMALIG sein dürfen.
Ohne extern gelagerte INI-Datei kriegst du das Problem NIE in den Griff.
Vor allem wenn die Datei auch noch als Vorlage für mehrere Personen benutzt wird.
Gruss Rainer
AW: Fortlaufende Nummern vergeben
27.03.2006 08:12:31
Andreas
hallo uwe,
vielen dank das bringt mich sehr weiter,
funktioniert einwandfrei.
einmal muß ich dich aber noch um hilfe bitten.
habe das selbe prob. mit dem datum.
habe einen vba code, welcher mir das datum einfügt,und auch nach dem speichern nicht mehr ändert, so wie ich es will, jedoch muß da immer die datumszeile in der vorlage leer sein. vielleicht hast du eine idee wie man das bewerkstelligen kann, das die zeile nicht leer sein muß, das datüm beim öffen eingefügt wird, und nach dem speichern der rechnung nicht aktualisiert wird, so wie die rechnungsnummer.
hier der code den ich habe:

Private Sub Workbook_Open()
'Hinweis: In der Mustervorlage muss die Datumszelle leer sein!!
Dim datumszelle As Range
Set datumszelle = ThisWorkbook.Sheets("Reparaturauftrag").Range("E11")
If IsEmpty(datumszelle) Then
datumszelle.Value = Date
End If
End Sub

vielen dank
gruß
andreas
Anzeige
AW: Fortlaufende Nummern vergeben
28.03.2006 00:46:46
Uwe
Hi Andreas,
ich glaube da können wir "Ihn" genauso austricksen wie vorher:


Private Sub Workbook_Open()
'Falls der Name "Vorlage.xls" ist wird der Inhalt Zelle E11 zuerst gelöscht:
If ActiveWorkbook.Name = "Vorlage.xls" Then _
ThisWorkbook.Sheets("Reparaturauftrag").Range("E11").Clear
'--------------------------------------------------------------------------------
  'Hinweis: In der Mustervorlage muss die Datumszelle leer sein!!
  Dim datumszelle As Range
  Set datumszelle = ThisWorkbook.Sheets("Reparaturauftrag").Range("E11")
  If IsEmpty(datumszelle) Then
    datumszelle.Value = Date
  End If
  End Sub


Natürlich wieder "Vorlage.xls" durch den richtigen Dateinamen ersetzen.
Probier das aber auf jedenfall genau aus, das kannst Du besser als ich.
Du solltes Dir aber auch auf jedenfall die Mails von Ramses genau durchlesen.
Ich weiß dass er in VBA um Längen besser ist als ich. Meine Lösungen sind ja auch eigentlich ziemlich primitiv. Aber wenn's klappt.....
Gruß
Uwe
(:o)
Anzeige
AW: Fortlaufende Nummern vergeben
26.03.2006 21:06:43
Daniel
hallo
ergänze einfach den Code von Uwe so:

Private Sub Workbook_Open()
Sheets("Tabelle1").Range("A1").Value = Range("A1").Value + 1
Thisworkbook.Save
Sheets("Tabelle1").Copy
End Sub

Damit kopierst du die die Rechnungsvorlage in eine neue Datei.
Die Makros werden nur mitkopiert, wenn sie im Klassenmodul vom kopierten Sheet stehen, dh. das Makro zum erhöhen der Rechnungsnummer bleibt in der Vorlage und wird NICHT in die Rechnung übernommen.
Außderdem verhinderst du damit, daß die Vorlage aus versehen überschrieben wird, da bei einer neuen Datei immer nach dem gewünschten Spreicherort gefragt wird.
(wenn du das wasserdicht haben willst, kannst du am Ende noch ein THISWORKBOOK.CLOSE einfügen, dann wird die Vorlage sofort wieder geschlossen, und kann nur geändert werden, wenn du die Makros beim Öffnen deaktivierst, hierfür muß allerdings die Makrosicherheit unter Extras-Optionen-Sicherheit-Makrosicherheit mindestens auf MITTEL gesetzt werden.)
Gruß, Daniel Eisert
Anzeige

298 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige