Discussion:
Fortlaufende Nummer
(zu alt für eine Antwort)
Bernhard Müller
2004-01-07 00:13:17 UTC
Permalink
Hallo

Hätte mal eine FRAGE:

Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Also wenn man das Rechnungsformular aufmacht das die Rechnungsnummer um eine
Stelle erhöht wird.
Ist das möglich ?????
Wie macht man das ????
Version :Office XP Professional

Mit der bitte um Hilfe

mfg
Müller Bernhard
Peter Wolber
2004-01-07 07:42:11 UTC
Permalink
Post by Bernhard Müller
Hallo
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Also wenn man das Rechnungsformular aufmacht das die Rechnungsnummer um eine
Stelle erhöht wird.
Ist das möglich ?????
Wie macht man das ????
Folgendes habe ich in dieser NG mal gefunden:

Man kann die Rechnungsnummer in eine Textdatei auslagern. Folgende
Prozedur schreibt bei jeder Ausführung die nächste Rechnungsnummer in
die Zelle A1 des ersten Tabellenblattes:

Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer

strFile = ThisWorkbook.Path & "\factura.ini"

If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If

intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close

Worksheets(1).Range("A1") = intNo
End Sub

Rufe sie entweder über eine Schaltfläche oder beim öffnen der Datei auf.

HTH
Gruss
Peter
Bernhard Müller
2004-01-07 12:15:59 UTC
Permalink
Wie kann ich das im EXCEL integreieren ?????????

mfg
Bernhard
Post by Peter Wolber
Post by Bernhard Müller
Hallo
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Also wenn man das Rechnungsformular aufmacht das die Rechnungsnummer um eine
Stelle erhöht wird.
Ist das möglich ?????
Wie macht man das ????
Man kann die Rechnungsnummer in eine Textdatei auslagern. Folgende
Prozedur schreibt bei jeder Ausführung die nächste Rechnungsnummer in
Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer
strFile = ThisWorkbook.Path & "\factura.ini"
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If
intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close
Worksheets(1).Range("A1") = intNo
End Sub
Rufe sie entweder über eine Schaltfläche oder beim öffnen der Datei auf.
HTH
Gruss
Peter
Peter Wolber
2004-01-07 13:43:05 UTC
Permalink
Post by Bernhard Müller
Wie kann ich das im EXCEL integreieren ?????????
Zuvor solltest du deine Tastatur reparieren. Mit dem Fragezeichen stimmt
irgendetwas nicht.

Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.

Als erstes speicherst du eine Texdatei unter dem Namen "factura.ini" in
ein beliebiges Verzeichnis. Du musst lediglich darauf achten, dass deine
Excel-Vorlage mit dem Rechnungsformular im selben Verzeichnis steht.

Der Inhalt dieser Textdatei besteht lediglich aus einer Zahl z.B. "1".

Dann rufst du in Excel dein Rechnungsformular auf und kopierst das Makro
über das Tabellenblatt mit rechten Maustaste - Code anzeigen.

Über Extras | Makros kannst du dann das Makro ausführen lassen und dabei
wird die Rechnungsnummer um 1 erhöht und die neue Rg.Nummer in Datei
factura.ini geschrieben.

HTH
Gruss
Peter
Post by Bernhard Müller
Post by Peter Wolber
Post by Bernhard Müller
Hallo
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben
wenn
Post by Peter Wolber
Post by Bernhard Müller
das Rechnungsformular neu geöffnet wird
Also wenn man das Rechnungsformular aufmacht das die Rechnungsnummer um
eine
Post by Peter Wolber
Post by Bernhard Müller
Stelle erhöht wird.
Ist das möglich ?????
Wie macht man das ????
Man kann die Rechnungsnummer in eine Textdatei auslagern. Folgende
Prozedur schreibt bei jeder Ausführung die nächste Rechnungsnummer in
Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer
strFile = ThisWorkbook.Path & "\factura.ini"
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If
intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close
Worksheets(1).Range("A1") = intNo
End Sub
Rufe sie entweder über eine Schaltfläche oder beim öffnen der Datei auf.
HTH
Gruss
Peter
Peter Wolber
2004-01-07 13:46:23 UTC
Permalink
Post by Peter Wolber
Über Extras | Makros kannst du dann das Makro ausführen lassen und dabei
wird die Rechnungsnummer um 1 erhöht und die neue Rg.Nummer in Datei
factura.ini geschrieben.
Achja, wenn du die Rechnungsnummer in einer anderen Zelle stehen haben
Post by Peter Wolber
Post by Peter Wolber
Worksheets(1).Range("A1") = intNo
^^^

Hier deine gewünschte Zelle reinschreiben.

Gruss
Peter
Melanie Breden
2004-01-07 16:51:09 UTC
Permalink
Hallo Peter, Hallo Bernhard,
Post by Peter Wolber
Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.
Yep, mir kam der Code auch so bekannt vor ;-)
Post by Peter Wolber
Als erstes speicherst du eine Texdatei unter dem Namen "factura.ini" in
ein beliebiges Verzeichnis. Du musst lediglich darauf achten, dass deine
Excel-Vorlage mit dem Rechnungsformular im selben Verzeichnis steht.
Diese Anleitung ist leider nicht richtig :-(

Es ist nicht erforderlich die '*.ini' -Datei vorab händisch zu erstellen.
Wenn die Datei 'factura.ini' nicht im Verzeichnis der aufrufenden Excel-Arbeitsmappe existiert, wird sie automatisch dort erstellt
und die Rechnungsnummer '1' gespeichert.
Post by Peter Wolber
Der Inhalt dieser Textdatei besteht lediglich aus einer Zahl z.B. "1".
Dann rufst du in Excel dein Rechnungsformular auf und kopierst das Makro
über das Tabellenblatt mit rechten Maustaste - Code anzeigen.
Normale Prozeduren (keine Ereignisprozeduren) werden üblicherweise in einem Standardmodul und nicht im Klassenmodul einer Tabelle
hinterlegt.
Post by Peter Wolber
Über Extras | Makros kannst du dann das Makro ausführen lassen und dabei
wird die Rechnungsnummer um 1 erhöht und die neue Rg.Nummer in Datei
factura.ini geschrieben.
Post by Bernhard Müller
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Dann schreibe den Code der Prozedur in das Workbook_Open-Ereignis des
Codemoduls "DieseArbeitsmappe".
Klicke dazu mit der rechten Maustaste auf das grüne Excel-Symbol, links neben dem Menü Datei
der Excel-Menüleiste und wähle 'Code anzeigen'.
Dauraufhin landest du im richtigen Codemodul von DieseArbeitsmappe.

Füge in die rechte Fensterhälfte folgende Prozedur ein und schließe den Editor wieder.

Private Sub Workbook_Open()
Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer

strFile = ThisWorkbook.Path & "\factura.ini"

If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If

intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close

Worksheets(1).Range("A1") = intNo
End Sub

Speicher und schließe die Datei. Künftig wird bei jeder Dateiöffnung im ersten Tabellenblatt
in der Zelle A1 die nächste Rechnungsnummer geschrieben und auch in der *ini Datei gespeichert.

--
Mit freundlichen Grüssen


Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Melanie Breden
2004-01-07 16:55:59 UTC
Permalink
Hallo zusammen,

Nachtrag:

Der Code hat eine Aufrufzeile zuviel :-(
Er muss natürlich lauten:

Private Sub Workbook_Open()
Dim strFile As String
Dim intNo As Integer
'...
'...
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Post by Melanie Breden
Hallo Peter, Hallo Bernhard,
Post by Peter Wolber
Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.
Yep, mir kam der Code auch so bekannt vor ;-)
Post by Peter Wolber
Als erstes speicherst du eine Texdatei unter dem Namen "factura.ini" in
ein beliebiges Verzeichnis. Du musst lediglich darauf achten, dass deine
Excel-Vorlage mit dem Rechnungsformular im selben Verzeichnis steht.
Diese Anleitung ist leider nicht richtig :-(
Es ist nicht erforderlich die '*.ini' -Datei vorab händisch zu erstellen.
Wenn die Datei 'factura.ini' nicht im Verzeichnis der aufrufenden Excel-Arbeitsmappe existiert, wird sie automatisch dort
erstellt
Post by Melanie Breden
und die Rechnungsnummer '1' gespeichert.
Post by Peter Wolber
Der Inhalt dieser Textdatei besteht lediglich aus einer Zahl z.B. "1".
Dann rufst du in Excel dein Rechnungsformular auf und kopierst das Makro
über das Tabellenblatt mit rechten Maustaste - Code anzeigen.
Normale Prozeduren (keine Ereignisprozeduren) werden üblicherweise in einem Standardmodul und nicht im Klassenmodul einer
Tabelle
Post by Melanie Breden
hinterlegt.
Post by Peter Wolber
Über Extras | Makros kannst du dann das Makro ausführen lassen und dabei
wird die Rechnungsnummer um 1 erhöht und die neue Rg.Nummer in Datei
factura.ini geschrieben.
Post by Bernhard Müller
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Dann schreibe den Code der Prozedur in das Workbook_Open-Ereignis des
Codemoduls "DieseArbeitsmappe".
Klicke dazu mit der rechten Maustaste auf das grüne Excel-Symbol, links neben dem Menü Datei
der Excel-Menüleiste und wähle 'Code anzeigen'.
Dauraufhin landest du im richtigen Codemodul von DieseArbeitsmappe.
Füge in die rechte Fensterhälfte folgende Prozedur ein und schließe den Editor wieder.
Private Sub Workbook_Open()
Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer
strFile = ThisWorkbook.Path & "\factura.ini"
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If
intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close
Worksheets(1).Range("A1") = intNo
End Sub
Speicher und schließe die Datei. Künftig wird bei jeder Dateiöffnung im ersten Tabellenblatt
in der Zelle A1 die nächste Rechnungsnummer geschrieben und auch in der *ini Datei gespeichert.
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Bernhard Müller
2004-01-07 23:27:54 UTC
Permalink
Noch eine Frage

Wie kann ich das Macro so ausführen das ich im EXCEL einen Button habe und
das es über das öffnen geht
Und wie könnte ich es machen wenn ich von Null wider anfangen will oder mit
einer bestimmten Nummer beginnen will

mfg
Müller Bernhard
Post by Melanie Breden
Hallo zusammen,
Der Code hat eine Aufrufzeile zuviel :-(
Private Sub Workbook_Open()
Dim strFile As String
Dim intNo As Integer
'...
'...
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Post by Melanie Breden
Hallo Peter, Hallo Bernhard,
Post by Peter Wolber
Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.
Yep, mir kam der Code auch so bekannt vor ;-)
Post by Peter Wolber
Als erstes speicherst du eine Texdatei unter dem Namen
"factura.ini" in
Post by Melanie Breden
Post by Melanie Breden
Post by Peter Wolber
ein beliebiges Verzeichnis. Du musst lediglich darauf achten, dass deine
Excel-Vorlage mit dem Rechnungsformular im selben Verzeichnis steht.
Diese Anleitung ist leider nicht richtig :-(
Es ist nicht erforderlich die '*.ini' -Datei vorab händisch zu erstellen.
Wenn die Datei 'factura.ini' nicht im Verzeichnis der aufrufenden
Excel-Arbeitsmappe existiert, wird sie automatisch dort
Post by Melanie Breden
erstellt
Post by Melanie Breden
und die Rechnungsnummer '1' gespeichert.
Post by Peter Wolber
Der Inhalt dieser Textdatei besteht lediglich aus einer Zahl z.B. "1".
Dann rufst du in Excel dein Rechnungsformular auf und kopierst das Makro
über das Tabellenblatt mit rechten Maustaste - Code anzeigen.
Normale Prozeduren (keine Ereignisprozeduren) werden üblicherweise
in einem Standardmodul und nicht im Klassenmodul einer
Post by Melanie Breden
Tabelle
Post by Melanie Breden
hinterlegt.
Post by Peter Wolber
Über Extras | Makros kannst du dann das Makro ausführen lassen und dabei
wird die Rechnungsnummer um 1 erhöht und die neue Rg.Nummer in Datei
factura.ini geschrieben.
Post by Bernhard Müller
Hab ein Rechnungsformular und möchte eine Fortlaufendenummer vergeben wenn
das Rechnungsformular neu geöffnet wird
Dann schreibe den Code der Prozedur in das Workbook_Open-Ereignis des
Codemoduls "DieseArbeitsmappe".
Klicke dazu mit der rechten Maustaste auf das grüne Excel-Symbol,
links neben dem Menü Datei
Post by Melanie Breden
Post by Melanie Breden
der Excel-Menüleiste und wähle 'Code anzeigen'.
Dauraufhin landest du im richtigen Codemodul von DieseArbeitsmappe.
Füge in die rechte Fensterhälfte folgende Prozedur ein und schließe
den Editor wieder.
Post by Melanie Breden
Post by Melanie Breden
Private Sub Workbook_Open()
Sub RechnungsNummer()
Dim strFile As String
Dim intNo As Integer
strFile = ThisWorkbook.Path & "\factura.ini"
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, intNo: Close
End If
intNo = intNo + 1
Open strFile For Output As #1
Print #1, intNo: Close
Worksheets(1).Range("A1") = intNo
End Sub
Speicher und schließe die Datei. Künftig wird bei jeder Dateiöffnung
im ersten Tabellenblatt
Post by Melanie Breden
Post by Melanie Breden
in der Zelle A1 die nächste Rechnungsnummer geschrieben und auch in
der *ini Datei gespeichert.
Post by Melanie Breden
Post by Melanie Breden
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Peter Wolber
2004-01-08 06:31:52 UTC
Permalink
Post by Bernhard Müller
Und wie könnte ich es machen wenn ich von Null wider anfangen will oder mit
einer bestimmten Nummer beginnen will
_Meine_ DAU-Lösung: Manuelles Editieren der Datei factura.ini.

Gruss
Peter
Melanie Breden
2004-01-08 12:40:50 UTC
Permalink
HalloBernhard,
Post by Bernhard Müller
Wie kann ich das Macro so ausführen das ich im EXCEL einen Button habe und
das es über das öffnen geht
Füge aus der Symbolleiste "Steuerelement-Toolbox" eine Schaltfläche auf
deinem Tabellenblatt ein. Klicke auf das zweite Symbol der Leiste "Eigenschaften".
Hier kannst du den Beschriftungstext und andere Einstellungen für das Element festlegen.

Mit einem Doppelklick auf das Element gelangst du in den VBA-Editor und es
wird das Codegerüst des Hauptereignisses 'CommandButton1_Click" erstellt.
Dazwischen kannst du nun Code einfügen, der ausgeführt wird,
wenn die Schaltfläche angeklickt wird.
Wechsel wieder in die Excel-Umgebung und beende den Entwurfmodus über
das türkisfarbene Symbol der genannten Symbolleiste.
Per Klick auf die Schaltfläche wird der hinterlegte Code ausgeführt.
Post by Bernhard Müller
Und wie könnte ich es machen wenn ich von Null wider anfangen will oder mit
einer bestimmten Nummer beginnen will.
Dazu habe ich die Prozedur in eine Funktion umprogrammiert.
Beim Aufruf der Funktion kann eine Zahl übergeben werden.
Weitere Kommentare stehen in der Funktion.
Speicher sie in einem Standardmodul:

Function Rechnungsnummer(ByRef rngCell As Range, _
Optional varNo As Variant = "Nix") As Boolean
'-----------------------------------------------------------------------'
' Autor: ***@mvps.org '
' Datum: 08.01.2004 '
' - Funktion erfordert zwingend als erstes Argument die '
' Ausgabezelle für Funktionsergebnis '
' - Optional kann als zweites Argument eine Rg.Nr. angegeben werden '
' - Im Verzeichnispfad der Arbeitsmappe wird eine *.ini-Datei angelegt, '
' wenn für das laufende Jahr noch keine besteht. '
' - *.ini-Datei enthält die letzte verwendete Rechnungsnummer '
' - Funktion liefert die nächste Rechnungsnummer im Format YYYYMM#### '
' - Beispiele zum Aufruf der Funktion: '
' - Nächste Rg.-Nr. in aktiver Zelle '
' Rechnungsnummer ActiveCell '
' - Von Vorne beginnen '
' Rechnungsnummer Worksheets(1).Range("A1"), 0 '
' - Rg.-Nr. 125 festlegen (1 Zähler weniger angeben wie gewünscht) '
' Rechnungsnummer ActiveCell, 124 '
'-----------------------------------------------------------------------'
Dim strFile As String
strFile = ThisWorkbook.Path & "\factura_" & Format(Date, "YYYY") & ".ini"

' Wenn keine Rg.-Nr. übergeben wurde, hole Wert
If varNo = "Nix" Then
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, varNo: Close
Else
varNo = 0
End If
End If

' Wenn Wert keine Zahl: Funktionsergebnis = Falsch
If Not IsNumeric(varNo) Or varNo > 999 Then Exit Function

varNo = varNo + 1
' neue Nr. in *.ini-Datei schreiben
Open strFile For Output As #1
Print #1, varNo: Close

' Ergenis in Ausgabezelle schreiben
rngCell.Value = Format(Date, "YYYYMM") & Format(varNo, "0000")
Rechnungsnummer = True
End Function

Der Schaltfläche zum einfügen der nächsten Rechnungsnummer hinterlege
folgende Prozedur:
Private Sub CommandButton1_Click()
Rechnungsnummer Worksheets(1).Range("A1")
End Sub

Füge eine zweite Schaltfläche ein, um über eine InputBox den Wert der
Rechnungsnummer einzugeben. Die *.ini-Datei wird entsprechend angepasst.

Private Sub CommandButton2_Click()
Rechnungsnummer _
Worksheets(1).Range("A1"), _
Application.InputBox( _
"Geben Sie eine Rechnungsnummer ein.", Type:=1) - 1
End Sub

Wenn du Fragen dazu hast, melde dich gerne wieder hier.

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Bernhard Müller
2004-01-08 23:43:17 UTC
Permalink
Habe es probiert aber irgendwie funktioniert es nicht
Kommt immer Fehler beim testen
Post by Melanie Breden
HalloBernhard,
Post by Bernhard Müller
Wie kann ich das Macro so ausführen das ich im EXCEL einen Button habe und
das es über das öffnen geht
Füge aus der Symbolleiste "Steuerelement-Toolbox" eine Schaltfläche auf
deinem Tabellenblatt ein. Klicke auf das zweite Symbol der Leiste "Eigenschaften".
Hier kannst du den Beschriftungstext und andere Einstellungen für das Element festlegen.
Mit einem Doppelklick auf das Element gelangst du in den VBA-Editor und es
wird das Codegerüst des Hauptereignisses 'CommandButton1_Click" erstellt.
Dazwischen kannst du nun Code einfügen, der ausgeführt wird,
wenn die Schaltfläche angeklickt wird.
Wechsel wieder in die Excel-Umgebung und beende den Entwurfmodus über
das türkisfarbene Symbol der genannten Symbolleiste.
Per Klick auf die Schaltfläche wird der hinterlegte Code ausgeführt.
Post by Bernhard Müller
Und wie könnte ich es machen wenn ich von Null wider anfangen will oder mit
einer bestimmten Nummer beginnen will.
Dazu habe ich die Prozedur in eine Funktion umprogrammiert.
Beim Aufruf der Funktion kann eine Zahl übergeben werden.
Weitere Kommentare stehen in der Funktion.
Function Rechnungsnummer(ByRef rngCell As Range, _
Optional varNo As Variant = "Nix") As Boolean
'-----------------------------------------------------------------------'
'
Post by Melanie Breden
' Datum: 08.01.2004
'
Post by Melanie Breden
' - Funktion erfordert zwingend als erstes Argument die
'
Post by Melanie Breden
' Ausgabezelle für Funktionsergebnis
'
Post by Melanie Breden
' - Optional kann als zweites Argument eine Rg.Nr. angegeben werden
'
Post by Melanie Breden
' - Im Verzeichnispfad der Arbeitsmappe wird eine *.ini-Datei angelegt, '
' wenn für das laufende Jahr noch keine besteht.
'
Post by Melanie Breden
' - *.ini-Datei enthält die letzte verwendete Rechnungsnummer
'
Post by Melanie Breden
' - Funktion liefert die nächste Rechnungsnummer im Format YYYYMM####
'
'
Post by Melanie Breden
' - Nächste Rg.-Nr. in aktiver Zelle
'
Post by Melanie Breden
' Rechnungsnummer ActiveCell
'
Post by Melanie Breden
' - Von Vorne beginnen
'
Post by Melanie Breden
' Rechnungsnummer Worksheets(1).Range("A1"), 0
'
Post by Melanie Breden
' - Rg.-Nr. 125 festlegen (1 Zähler weniger angeben wie gewünscht)
'
Post by Melanie Breden
' Rechnungsnummer ActiveCell, 124
'
'-----------------------------------------------------------------------'
Post by Melanie Breden
Dim strFile As String
strFile = ThisWorkbook.Path & "\factura_" & Format(Date, "YYYY") & ".ini"
' Wenn keine Rg.-Nr. übergeben wurde, hole Wert
If varNo = "Nix" Then
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, varNo: Close
Else
varNo = 0
End If
End If
' Wenn Wert keine Zahl: Funktionsergebnis = Falsch
If Not IsNumeric(varNo) Or varNo > 999 Then Exit Function
varNo = varNo + 1
' neue Nr. in *.ini-Datei schreiben
Open strFile For Output As #1
Print #1, varNo: Close
' Ergenis in Ausgabezelle schreiben
rngCell.Value = Format(Date, "YYYYMM") & Format(varNo, "0000")
Rechnungsnummer = True
End Function
Der Schaltfläche zum einfügen der nächsten Rechnungsnummer hinterlege
Private Sub CommandButton1_Click()
Rechnungsnummer Worksheets(1).Range("A1")
End Sub
Füge eine zweite Schaltfläche ein, um über eine InputBox den Wert der
Rechnungsnummer einzugeben. Die *.ini-Datei wird entsprechend angepasst.
Private Sub CommandButton2_Click()
Rechnungsnummer _
Worksheets(1).Range("A1"), _
Application.InputBox( _
"Geben Sie eine Rechnungsnummer ein.", Type:=1) - 1
End Sub
Wenn du Fragen dazu hast, melde dich gerne wieder hier.
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Melanie Breden
2004-01-09 08:08:17 UTC
Permalink
Hallo Bernhard,
Post by Bernhard Müller
Habe es probiert aber irgendwie funktioniert es nicht
Kommt immer Fehler beim testen
kannst du genauere Angaben machen.
Welche Prozeduren hast du in welchen Modulen stehen und bei
welchem Aufruf kommt welche Fehlermeldung?

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Peter Wolber
2004-01-09 09:42:05 UTC
Permalink
Post by Melanie Breden
Post by Bernhard Müller
Habe es probiert aber irgendwie funktioniert es nicht
Kommt immer Fehler beim testen
kannst du genauere Angaben machen.
Welche Prozeduren hast du in welchen Modulen stehen und bei
welchem Aufruf kommt welche Fehlermeldung?
Ich habe das ganze auch mal versucht (W2K SP4 und Excel2K SP3) anhand
deiner Anleitung nach zu vollziehen und bekomme ebenfalls eine
Fehlermeldung:

Bei der Eingabe der Rg.Nr. erscheint ein Fehler beim Kompilieren: Sub
oder Funktion nicht definiert. Markiert wird im nachfolgenden Code das
Wort "Rechnungsnummer"

Private Sub CommandButton2_Click()
Rechnungsnummer _
Worksheets(1).Range("A1"), _
Application.InputBox( _
"Geben Sie eine Rechnungsnummer ein.", Type:=1) - 1
End Sub

Im Objekt "Diese Arbeitsmappe" steht unter Objekt Allgemein / Prozedur
Rechnungsnummer der nachfolgende Code (Kommentare teilweise wg
Zeilenumbruch gelöscht)


Function Rechnungsnummer(ByRef rngCell As Range, _
Optional varNo As Variant = "Nix") As Boolean
Dim strFile As String
strFile = ThisWorkbook.Path & "\factura_" & Format(Date, "YYYY") &
".ini"

' Wenn keine Rg.-Nr. übergeben wurde, hole Wert
If varNo = "Nix" Then
If Dir(strFile) <> "" Then
Open strFile For Input As #1
Input #1, varNo: Close
Else
varNo = 0
End If
End If

' Wenn Wert keine Zahl: Funktionsergebnis = Falsch
If Not IsNumeric(varNo) Or varNo > 999 Then Exit Function

varNo = varNo + 1
' neue Nr. in *.ini-Datei schreiben
Open strFile For Output As #1
Print #1, varNo: Close

' Ergenis in Ausgabezelle schreiben
rngCell.Value = Format(Date, "YYYYMM") & Format(varNo, "0000")
Rechnungsnummer = True
End Function

HTH
Gruss
Peter
Melanie Breden
2004-01-09 13:17:10 UTC
Permalink
Hallo Peter,
Post by Peter Wolber
Ich habe das ganze auch mal versucht (W2K SP4 und Excel2K SP3) anhand
deiner Anleitung nach zu vollziehen und bekomme ebenfalls eine
die Funktion und Aufrufprozeduren funzen bei mir unter Win XP Prof. einwandfrei.
Post by Peter Wolber
Bei der Eingabe der Rg.Nr. erscheint ein Fehler beim Kompilieren: Sub
oder Funktion nicht definiert. Markiert wird im nachfolgenden Code das
Wort "Rechnungsnummer"
Private Sub CommandButton2_Click()
Rechnungsnummer _
Worksheets(1).Range("A1"), _
Application.InputBox( _
"Geben Sie eine Rechnungsnummer ein.", Type:=1) - 1
End Sub
Im Objekt "Diese Arbeitsmappe" steht unter Objekt Allgemein / Prozedur
Rechnungsnummer der nachfolgende Code (Kommentare teilweise wg
Zeilenumbruch gelöscht)
Function Rechnungsnummer(ByRef rngCell As Range, _
Optional varNo As Variant = "Nix") As Boolean
Da die Funktion in einem Klassenmodul hinterlegt ist, kann sie nicht gefunden werden.
Also in einem Standardmodul hinterlegen!

Man kann Public Prozeduren oder Funktionen aus Klassenmodulen aufrufen,
indem man dem Prozedurnamen den Modulnamen voranstellt, üblich ist
dies allerdings nicht.

DieseArbeitsmappe.Rechnungsnummer

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Peter Wolber
2004-01-09 13:39:34 UTC
Permalink
Post by Melanie Breden
die Funktion und Aufrufprozeduren funzen bei mir unter Win XP Prof. einwandfrei.
Bei mir jetzt auch.
Und ich war zu doof um das geschriebene richtig umzusetzen.

Gruss und Danke
Peter -VBA-DAU
Melanie Breden
2004-01-09 14:20:48 UTC
Permalink
Hallo Peter,
Post by Peter Wolber
Post by Melanie Breden
die Funktion und Aufrufprozeduren funzen bei mir unter Win XP Prof. einwandfrei.
Bei mir jetzt auch.
Und ich war zu doof um das geschriebene richtig umzusetzen.
wie war das noch mit den Dumm- und Weisheiten? ;-)

Das war doch jetzt ein klassisches Beispiel dafür, dass
Prozeduren in den richtigen Modulen gespeichert werden müssen :-)

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Peter Wolber
2004-01-07 17:54:28 UTC
Permalink
Post by Melanie Breden
Post by Peter Wolber
Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.
Yep, mir kam der Code auch so bekannt vor ;-)
Boah, bei den vielen Codes die du hier postest musst du ja ein
Gedächtnis wie der sprichwörtliche Elefant haben.

[Richtigstellungen zu meiner falschen Anleitung]

Danke für die Klarstellung[1].

Gruss
Peter-VBA-DAU

Fußnoten:
[1] Ich werde mich in Zukunft bemühen nicht allzuviel Verwirrung zu
stiften
--
"Je mehr man weiss, desto groesser die Erkenntnis, dass man eigentlich
nichts weiss." ( Goethe)
Melanie Breden
2004-01-07 18:39:36 UTC
Permalink
Hallo Peter,
Post by Peter Wolber
Post by Melanie Breden
Post by Peter Wolber
Ich bin kein VBA-Freak und soweit ich zwischenzeitlich gesehen habe ist
dieses Makro von Melanie Breden.
Yep, mir kam der Code auch so bekannt vor ;-)
Boah, bei den vielen Codes die du hier postest musst du ja ein
Gedächtnis wie der sprichwörtliche Elefant haben.
naja, vielleicht nicht ganz so groß...aber meine Codes erkenne ich schon wieder...
sozusagen an meiner Hanschrift.
Und dieser ist ja noch keine 3 Wochen alt ;-)
Post by Peter Wolber
[Richtigstellungen zu meiner falschen Anleitung]
Danke für die Klarstellung[1].
Bittesehr, gern geschehen zumal die manuelle Anlage der Text-Datei im
richtigen Verzeichnis vielleicht doch einige User abschreckt?
Post by Peter Wolber
[1] Ich werde mich in Zukunft bemühen nicht allzuviel Verwirrung zu stiften
--
"Je mehr man weiss, desto groesser die Erkenntnis, dass man eigentlich
nichts weiss." ( Goethe)
------------------------------------------
Unsere Weisheit kommt aus unserer Erfahrung. Unsere Erfahrung kommt aus unseren Dummheiten.
(Guitry, Sacha - franz. Schriftsteller)
------------------------------------------

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Peter Wolber
2004-01-08 06:19:06 UTC
Permalink
Post by Melanie Breden
Post by Peter Wolber
"Je mehr man weiss, desto groesser die Erkenntnis, dass man eigentlich
nichts weiss." ( Goethe)
------------------------------------------
Unsere Weisheit kommt aus unserer Erfahrung. Unsere Erfahrung kommt aus unseren Dummheiten.
(Guitry, Sacha - franz. Schriftsteller)
------------------------------------------
Meine Sig - dieses Posting habe ich vom PC zu Hause abgesetzt - wird
zufallsgeneriert erzeugt. Ich frage mich ab und zu immer wieder ob mein
PC nicht sowas wie KI hat. :-))

Gruss
Peter
Peter Wolber
2004-01-08 06:34:17 UTC
Permalink
Post by Melanie Breden
Normale Prozeduren (keine Ereignisprozeduren) werden üblicherweise in einem Standardmodul und nicht im Klassenmodul einer Tabelle
hinterlegt.
Kannst du mir ganz kurz den Unterschied erklären (gerne auch über einen
Link)

Gruss
Peter
Melanie Breden
2004-01-08 11:02:47 UTC
Permalink
Hallo Peter,
Post by Peter Wolber
Post by Melanie Breden
Normale Prozeduren (keine Ereignisprozeduren) werden üblicherweise in einem
Standardmodul und nicht im Klassenmodul einer Tabelle hinterlegt.
Kannst du mir ganz kurz den Unterschied erklären (gerne auch über einen
Link)
Module sind Container für Code und für Variablen. Code ist jede Funktion,
die einen oder mehrere Werte zurückgibt oder ein Makro, dass keine Werte
zurückliefert. Ein Modul ist also ein Container für VBA-Routinen.
Excel/VBA kennt Standard- und Klassenmodule. In Standardmodule wird Code
zum allgemeinen Programmablauf hinterlegt, Klassenmodule verwalten Objekte
mit ihren Eigenschaften, Methoden und Ereignissen.

Da es sich bei den Codemodulen der Tabellen ebenfalls um Klassenmodule handelt,
schaue mal diesen Link an:

http://www.ms-office-forum.net/forum/archivethread-40949.html

Oder einfach mal nach Stichworten zum Thema googeln :-)

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Peter Wolber
2004-01-08 12:21:14 UTC
Permalink
Post by Melanie Breden
Da es sich bei den Codemodulen der Tabellen ebenfalls um Klassenmodule handelt,
http://www.ms-office-forum.net/forum/archivethread-40949.html
THX

Gruss
Peter
Loading...