Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl eingeben und per VBA formatieren

Zahl eingeben und per VBA formatieren
05.11.2008 16:08:10
Herbert
Hallo Gemeinde
Ich habe eine Zelle in einem .xlt, dort soll der User eine Zahl eingeben und mit dem Changeereignis
soll die Zahl in der Form JJ/###A umgewandelt werden.
Beispiel: 201 soll 08/201A werden. Das, was ich hier verbrochen habe, funst nicht, kann mir jemand helfen?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim numold As String, numnew As String
jahr = Format(CDate(Now), "yy")
If Range("O5") = "" Then Exit Sub
numold = Range("O5").Value
numnew = jahr & "/" & numold & "A"
Range("O5").Value = numnew
End Sub


Gruß Herbert

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
benutzerdefiniertes Zellformat
05.11.2008 16:21:00
Beate
Hallo Herbert,
makrofrei geht das mit diesem benutzerdefinierten Zellformat:
"08/"@"A"
Guckst du: http://www.online-excel.de/excel/singsel.php?f=71#s17
Die fürs nächste Jahr bestimmten Zellen formatierst du dann einmalig neu mit: "09/"@"A"
Gruß,
Beate
AW: benutzerdefiniertes Zellformat
05.11.2008 16:40:00
Herbert
Danke Beate
Will aber kein Format, sondern "echte" Werte
trotzdem Danke
Gruß Herbert
AW: Zahl eingeben und per VBA formatieren
05.11.2008 16:23:22
UweD
Hallo
so?


Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Application.EnableEvents = False
    Target = Format(Date, "YY") & "/" & Target & "A"
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    Application.EnableEvents = True
End Sub


Gruß UweD
Anzeige
AW: Zahl eingeben und per VBA formatieren
05.11.2008 16:44:00
Herbert
Hallo Uwe
Sorry, mit Deinem Code tut sich bei mir gar nichts
Gruß Herbert
hast Du auch ins Tabelleblatt kopiert?
05.11.2008 17:07:00
Matthias
Hallo
hast Du den Code auch in das entsprechende Tabellenblatt kopiert?
Gruß Matthias
AW: hast Du auch ins Tabelleblatt kopiert?
05.11.2008 17:22:00
Herbert
Hallo Matthias
Blind ist gut, aber so blind wie ich . . .
Im Tabellencode war noch ein "leeres" Worksheet_Change, aber wie muß ich den Code ergänzen,
wenn ich nur in einer Zelle das Change_Ereignis habne will. Das Ganze ist ein Formular und nur bei
Eingabe z.B. in B3 soll die Umwandlung passieren, mit dem Code passiert es ja bei jeder Eingabe in eine Zelle?
Gruß Herbert
AW: hast Du auch ins Tabelleblatt kopiert?
05.11.2008 17:30:00
Matthias
Hallo

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("B3")) Is Nothing Then
If Target  "" And Target.Count = 1 And IsNumeric(Target) Then Target = Format(Date, "YY") _
& "/" & Target & "A"
End If
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub


Gruß Matthias

Anzeige
AW: hast Du auch ins Tabelleblatt kopiert?
05.11.2008 17:34:57
Hajo_Zi
Hallo Matthias,
ist das Fehler: nicht zu viel?

im Grund schon ...
05.11.2008 17:52:23
Matthias
Hallo Hajo
Ich habe ja auch die erste Zeile unterschlagen ;-)
On Error GoTo Fehler
Na klar ist da zu viel drin.
Ich habe auch nur den Code von Uwe übernommen. (fast ;o) )
Mir ging es auch nicht darum den Code zu ändern, sondern Herbert klar zumachen wohin der Code gehört.
aber Recht hast Du schon
Ich frag ja explicit "B3" ab, also ist die Fehlerroutine eigentlich sowieso nicht notwendig.
aber schaden kanns nie. Muss eben nur noch das On Error GoTo Fehler wieder an den Anfang mit rein.
Hauptsache Herbert liest das hier auch.
wie geschrieben hatte nur die erste Zeile nicht mitkopiert (mein Fehler)
Danke Hajo, für die Richtigstellung
Gruß Matthias
Anzeige
leere Zellen sollten noch abgefangen werden
05.11.2008 17:12:00
Matthias
Hi Uwe
Ich würde aber noch ein paar Abfragen einbinden
  • Zelle leer

  • IsNumeric

  • nur eine Zelle markiert

  • nur in entsprechende Spalte ausführen

  • in etwa für Spalte A so:

    
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Application.EnableEvents = False
    If Target  "" And Target.Count = 1 And Target.Column = 1 And IsNumeric(Target) Then _
    Target = Format(Date, "YY") & "/" & Target & "A"
    Fehler:
    If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    Application.EnableEvents = True
    End Sub
    



    Gruß Matthias
    Anzeige
    Klappt ! Vielen Dank Euch allen o.T.
    05.11.2008 17:37:12
    Herbert

    332 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige