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

Forumthread: Bei Enter VBA-Code ausführen

Bei Enter VBA-Code ausführen
11.11.2005 11:19:37
Gerhard
Hallo,
ich habe eine Tabelle, in der in einer Zelle Daten im Zeitformat geschrieben werden soll.
Ich will, dass wenn der Benutzer keinen Doppelpunkt schreibt, Excel die Daten automatisch als Uhrzeit erkennt. Gut wäre es auch, wenn Excel das im Tabellenblatt "Eingabe" generell machen würde, ohne sich auf eine bestimmte Zelle zu beziehen. Ich habe mir hier auch zwei VBA-Codes herausgesucht und versucht sie zusammen zu basteln. Da ich leider von VBA keine große Ahnung habe, muß sich dabei ein Fehler eingeschliessen haben. Ich bekomme immer die Fehlermeldung "Typen unverträglich". Kann mir irgendjemand weiterhelfen?
Hier der VBA-Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim sTxt As String
If Target.Address = "$I$14" Then
For Each rng In Selection.Cells
sTxt = rng.Value
rng.NumberFormat = "hh:mm"
rng.Value = TimeSerial(Left(sTxt, 2), Right(sTxt, 2), 0)
Next rng
End If
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Enter VBA-Code ausführen
11.11.2005 11:52:51
u_
Hallo,
mal als Ansatz:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strTmp As String
If IsNumeric(Target) Then
On Error GoTo ERRHDL
Application.EnableEvents = False
strTmp = Right("0000" & CStr(Target), 4)
Target = TimeSerial(Left(strTmp, 2), Right(strTmp, 2), 0)
Target.NumberFormat = "[hh]:mm"
End If
ERRHDL:
Application.EnableEvents = True
End Sub

Gruß
Geist ist geil!
Anzeige
AW: Bei Enter VBA-Code ausführen
11.11.2005 12:04:39
Gerhard
Hallo,
das funktioniert leider nicht ganz. Wenn der Benutzer z.B. nur 40 eingibt, macht Excel daraus Minuten.
Ich habe aber einen anderen Code gefunden, da funktioniert es. Nur hat der den Nachteil, der bezieht sich nur auf eine bestimmte Zeile. Ich hätte es aber gerne, dass es sich auf das ganze Tabellenblatt bezieht.
Hier mein gefundener Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s%, m%
'Soll nur bei einer Eingabe in Spalte I wirksam werden:
If Target.Column <> 9 Then Exit Sub
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
.NumberFormat = "[hh]:mm"
If Len(.Value) > 2 Then
s = Left(.Value, Len(.Value) - 2)
m = Right(.Value, 2)
Else
s = .Value
m = 0
End If
.Value = s & ":" & m
End If
End With
End Sub

Anzeige
AW: Bei Enter VBA-Code ausführen
11.11.2005 12:11:38
Uduuh
Hallo,
dann nimm das
If Target.Column 9 Then Exit Sub
raus.
Gruß aus’m Pott
Udo

AW: Bei Enter VBA-Code ausführen
11.11.2005 13:20:29
Gerhard
Danke, jetzt funktioniert es.
Gruß
Gerhard
AW: Bei Enter VBA-Code ausführen
11.11.2005 14:46:42
Gerhard
Hallo,
jetzt habe ich doch noch ein Problem.
In allen anderen Tabellenblättern soll es nur für die Spalten C, D und K so sein, dass wenn der Benutzer kein Doppelpunkt schreibt, Excel die Daten automatisch als Uhrzeit erkennt.
Hier der Code, der aber nur für Spalte C funktioniert:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s%, m%
'Bei einer Eingabe in Spalte C wirksam
If Target.Column <> 3 Then Exit Sub
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
.NumberFormat = "[hh]:mm"
If Len(.Value) > 2 Then
s = Left(.Value, Len(.Value) - 2)
m = Right(.Value, 2)
Else
s = .Value
m = 0
End If
.Value = s & ":" & m
End If
End With
End Sub

Anzeige
AW: Bei Enter VBA-Code ausführen
11.11.2005 15:54:29
Gerhard
Hallo,
habe die Lösung gefunden. Jetzt geht alles.
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige