AW: Nummerierung
28.11.2007 11:17:20
Renee
Hi Anke,
Versuch es mal so:
' Dieser Code gehört in ein Modul:
' Die Inhalte der Konstanten den eigenen Bedürfnissen anpassen.
Public Const cNameOfWB = "Vorlage.xls" ' Name der Vorlagendatei
Public Const cTargetSheet = "Tabelle1" ' Name des Blattes mit der NUMMER
Public Const cTargetCell = "B2" ' Zelle-Adresse für die NUMMER auf Blatt
Public Const cStartNr = 1 ' Jede Jahr start mit dieser Nummer
Public Const cAppName = "Excel"
Public Const cSection = "AutoSequence"
Public Const cKey = "NextSequenceID"
' Dieser Code gehört in ein DieseArbeitsMappe:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Name = cNameOfWB Then Exit Sub
SaveSetting appName:=cAppName, _
Section:=cSection, _
Key:=cKey, _
Setting:=ActiveWorkbook.Worksheets(cTargetSheet).Range(cTargetCell).Value + 1
End Sub
Private Sub Workbook_Open()
' Vergibt die nächste Sequenznummer in die Zelle cTargetCell
' Die Sequencenummer wird erhöht, falls eine Datei
' mit dieser Vorlage unter einem anderen Namen gespeichert wird.
Dim lThisYear As Long
If ThisWorkbook.Name cNameOfWB Then Exit Sub
lThisYear = GetSetting(appName:=cAppName, _
Section:=cSection, _
Key:="currYear", _
Default:=0)
If lThisYear Year(Date) Then
SaveSetting appName:=cAppName, _
Section:=cSection, _
Key:="currYear", _
Setting:=Year(Date)
SaveSetting appName:=cAppName, _
Section:=cSection, _
Key:=cKey, _
Setting:=cStartNr
End If
ActiveWorkbook.Worksheets(cTargetSheet).Range(cTargetCell).Value = _
Val(GetSetting(appName:=cAppName, _
Section:=cSection, _
Key:=cKey, _
Default:=cStartNr))
End Sub
Aber Vorsicht: Es sollte immer nur eine Kopie der Vorlage geöffnet sein!
GreetZ Renee