Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellfomatierung per VBA

Zellfomatierung per VBA
04.10.2006 14:54:20
Marc
Hallo zusammen,
ich habe folgendes Problem. Ich möchte gern einen Beleg erstellen, in dem ich Belegnummern eintrage. Diese Nummern können bis zu 5 Stellen haben. Zudem kann davor ein zweistelliger Belegschlüssel stehen, in Form einer Zahl. Und hinter der Belegnummer kommen nochmal fest zwei Nullen. Nehmen wir an, ich habe den Beleg 585 mit dem Belegschlüssel 20. Dann sähe die fertige Belegnummer so aus: 200058500. Gäbe es keinen Belegschlüssel, dann sähe die Nummer so aus: 000058500. Das läßt sich durch ein benutzerdefiniertes Format leicht bewerkstelligen. Das Problem ist aber, dass dies dann nicht dem tatsächlichen Zellinhalt entspricht sondern nur angezeigt wird. Wie kann ich es per VBA bewerkstelligen, dass allein nach Eingabe einer bis zu 5-stelligen Belegnummer mit vorgestelltem Belegschlüssel eine solche Nummer generiert wird? Also ich gebe z. B. 20585 ein. Die zwischengestellten Stellen, die nicht benutzt werden, sollen durch Nullen aufgefüllt werden und die beiden letzten Stellen sollen ebenfalls grundsätzlich Nullen enthalten. Allerdings soll das auch funktionieren, wenn ich nur z. B. die 585 eingebe. Dann muß die Tabelle erkennen, dass der Schlüssel fehlt und ebenfalls durch Nullen ersetzt wird. Geht das?
Ich würde mich sehr über hilfreiche Antworten freuen und bedanke mich schon mal im Voraus für eure Mühe!
Grüße,
Marc Richter
P. S. Oben müßte eigentlich stehen "Excel-Profi - VBA mäßig"

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellfomatierung per VBA
04.10.2006 15:05:46
Rudi
Hallo,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
On Error GoTo ERRHDL
Application.EnableEvents = False
Select Case Len(Target)
Case 3: Target = "'0000" & Target & "00"
Case 5: Target = "'" & Left(Target, 2) & "00" & Right(Target, 3) & "00"
End Select
Application.EnableEvents = True
End If
ERRHDL:
Application.EnableEvents = True
End Sub
Gruß
Rudi
AW: Zellfomatierung per VBA
04.10.2006 15:32:21
Marc
Hallo Rudi,
vielen Dank für die schnelle Hilfe! Der Code ist schon soweit sehr gut! Einzige Problem ist, die Belegnummer kann zwischen einer und fünf Stellen haben. Dein Code funktioniert leider nur wenn ich eine dreistellige Belegnummer eingebe. Kann man diesen Code noch so flexibel gestalten, dass er bei jeder Nummernlänge zwischen einer und fünf stellen funktioniert?
Kann ich zudem eine Art Verketten Funktion mit VBA erstellen? Ich muß drei Zellen hintereinander in eine Zelle schreiben lassen.
Grüße,
Marc Richter
Anzeige
AW: Zellfomatierung per VBA
04.10.2006 16:09:48
Rudi
Hallo,
da gibt es ein Problem: Wie kann unterschieden werden, ob es sich bei einer 5-stelligen Nummer um 2x Belegart + 3x Belegnummer oder um 5x Belegnummer handelt? Eine Möglichkeit wäre, bei der Eingabe eintrennzeichen, z.B."-" mitzugeben. 20-538 würde dann zu 200053800 und 20538 zu 000020538 wenn ich das richtig sehe.
Verketten kann man nach dem Muster: Range("D1")=Range("A1") &Range("B1") &Range("C1")
Gruß
Rudi
AW: Zellfomatierung per VBA
04.10.2006 21:28:29
Marc
Hallo Rudi,
genau das ist mein Problem... Im benutzerdefinierten Format kann Excel das. Man gibt vor, dass die Zeichenfolge 7 Zeichen lang sein muß. Und alle Zeichen, die nicht ausgeschrieben werden bleiben Nullen. Gibt es keine Möglichkeit das per VBA zu lösen?
Grüße,
Marc
Anzeige
AW: Zellfomatierung per VBA
04.10.2006 22:31:00
Rudi
Hallo,
das widerspricht aber dem, was du am Anfang geschrieben hast. Meinst du schlicht die Umsetzung des Formats 0000000 ? Das bringt dir aber keine Nullen mittenrein oder ans Ende.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
On Error GoTo ERRHDL
Application.EnableEvents = False
Target=format(target,"0000000")
Application.EnableEvents = True
End If
ERRHDL:
Application.EnableEvents = True
End Sub

Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige