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

Optimierung von VBA Code

Optimierung von VBA Code
20.12.2006 20:49:54
VBA
Hallo Excelfreunde,
ich habe eine Textbox in der ich ein Datum eingeben will. Dieses Datum soll entweder als "normales Datum" (10.12.06) oder als Kurzform (10.12.) eingegeben werden können.
Wenn es als Kurzform eingegeben wird, wird per VBA das Jahr (DB_Jahr) angehängt.
Das in die Textbox eingegebene Datum soll als Datum Format in eine Zelle eingetragen werden. Falls sich die Eingabe nicht um ein Datum handelt, sollte der Text der Textbox als Text in die Zelle eingetragen werden.
Ich verwende dafür folgenden Code:

Private Sub Textbox_AfterUpdate()
If Textbox = "" Then Sheets(2).Cells(RowNR, 15) = "": Exit Sub
If IsDate(Textbox) = True Then
Sheets(2).Cells(RowNR, 15) = Format(Textbox.Value, "dd.mm.yy")
Else
If IsNumeric(Textbox) = True Then
Sheets(2).Cells(RowNR, 15) = Format(Textbox.Value & DB_Jahr, "dd.mm.yy")
Else
Sheets(2).Cells(RowNR, 15) = Textbox
End If
End If
End Sub

Ich bin mir sicher, daß dies keine optimale Lösung ist. Daher suche ich nach einer eleganteren Lösung.
Gruß
Dieterlem

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimierung von VBA Code
20.12.2006 21:29:35
VBA
Hallo
Ich denke mal, das ist die eleganteste Lösung,... auch wenn sie nicht funktioniert :-)
Gib mal in der Textbox "12.12.", so wie du geschrieben hast, dann bringt
If IsNumeric(TextBox1) = True Then
einen Fehler, denn diese Eingabe ist für EXCEL nicht mehr nummerisch, sondern schlicht und einfach Text :-)
Das zu prüfen ist aufwändiger
If IsNumeric(Left(TextBox1, 2)) And Mid(TextBox1, 3, 1) = "." And IsNumeric(Mid(TextBox1, 4, 2)) And Mid(TextBox1, 6, 1) = "." Then
MsgBox "Datum kann komplettiert werden"
End If
Unter der Voraussetzung, dass das Datum in der Form von "12.12." oder "01.12." eingegeben wird.
Datumseingaben in der Textbox ist so ziemlich das schlimmste was einem Programmierer passieren kann, weil er alle möglichen Varianten abfragen muss.
Die Punktprüfung deshalb, weil Kommazahlen nicht für Datumswerte verwendet werden können.
Am einfachsten verwendest du das Kalendersteuerelement, da sind keine Falscheingaben möglich :-)
Gruss Rainer
Anzeige
AW: Optimierung von VBA Code
20.12.2006 23:37:19
VBA
Hi,
"Daher suche ich nach einer eleganteren Lösung."
Da bist du bei Excel falsch, Hugo Boss ist die richtige Wahl.
mfg Jens

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige