Clever-Excel-Forum

Normale Version: 4 Zahlen als Uhrzeit im selben Feld
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Community,

wie der Titel schon erahnen lässt, möchte ich gerne 4 Zahlen also z.B. 1430 automatisch in 14:30 umgewandelt haben. Das Ganze soll allerdings im selben Feld passieren.

Nach einer kleinen Suche konnte ich diesen VBA Code finden.

Private Sub Worksheet_Change(ByVal Target As Range)

   Dim Eingabe As Variant
 
   On Error GoTo ErrorHandler
   If Not Intersect(Target, Columns(1)) Is Nothing Then
      Application.EnableEvents = False
      With Target
         .Value = CDate(Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2))
         .NumberFormat = "[hh]:mm"
      End With
   End If
ErrorHandler:
   Application.EnableEvents = True
End Sub

Dieser tut genau das was ich gerne hätte, allerdings nur in der Spalte A.

Leider kenne ich mich mit diesen Codes nicht aus, sodass kleine Änderungsversuche meinerseits
nicht das gewünscht Ergebnis erzielen konnte - Deswegen wende ich mich jetzt an euch:

Kann mir jemand bei der Umwandlung des Codes helfen, sodass nicht nur die 4-Stelligen Zahlen der Spalte A sondern sagen wir auch die Zahlen von Spalte A bis Spalte "x" als Uhrzeit ausgeben werden?

Wäre euch sehr dankbar!

Vielen Dank im Voraus und freundliche Grüße

L
Hallo Linki

Code:
If Not Intersect(Target, Columns(1)) Is Nothing Then
Columns(1) ist Spalte A
Code:
If Not Intersect(Target, Columns(1, 3)) Is Nothing Then
Ist für Spalte A und C
Code:
If Not Intersect(Target, Columns(1 - 3)) Is Nothing Then
Ist für Spalten A bis C
Mfg Guschti
Hallo Linki,
If Not Intersect(Target, Range("A:X")) Is Nothing Then
@Guschti, bevor Du solchen Mist postest, teste es bitte!

Gruß Uwe
(14.02.2018, 23:26)Kuwer schrieb: [ -> ]Hallo Linki,
If Not Intersect(Target, Range("A:X")) Is Nothing Then
@Guschti, bevor Du solchen Mist postest, teste es bitte!

Gruß Uwe

@Kuwer. Ich hab das wohl getestet. Bei mir funktioniert es einwandfrei.
Wenn das bei dir nicht geht, kannst du das auch freundlich Mitteilen. Aber nicht so.
Eine Entschuldigung deinerseits könnte ich annehmen.

http://www.clever-excel-forum.de/thread-297.html

Mfg Guschti
@Guschti:

Über das Wort "Mist" könnte man trefflich streiten, nicht aber über die Intention des Satzes von Uwe.
Ich kann mir nicht vorstellen, dass Deine Vorschläge bei Dir funktionieren.
Bei mir kommt in beiden Fällen der LZF 1004

Andere Möglichkeit:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
 Case 1 To 24  'A bis X
   ' der Code
End Select
End Sub

Ich bin allerdings der Meinung, dass man Zeiten besser mit Autokorrektur eingibt:
Doppelkomma ,, durch Doppelpunkt : ersetzen,
Eingabe dann mittels Ziffernblock
12,,48 ergibt sehr schnell und ohne VBA 12:48

Gruß Ralf
Das gabs vor einem Jahr ähnlich auch hier:

http://www.clever-excel-forum.de/thread-8379.html
Dann hoffe ich mal, dass dieser Thread nicht ebenso "ausartet".  :21:
Guten Morgen,

bin euch sehr dankbar für eure Antworten - Habe beides getestet,
allerdings scheint bis jetzt nur die Variante mit Target, Range ("A:X")) zu funktionieren.
Gibt es bei der Variante mit Target, Columns (1 - 3)) einige Dinge die ich vorab einstellen muss?

Der Tipp mit dem Doppel-Komma ist natürlich eine gute Alternative, ich selber finde es aber schöner,
wenn ich nur die 4 Stellen eingeben muss und das Komma schon automatisch ergänzt wird.

Anyways, nochmals vielen Dank Leute - Mein Problem wurde gelöst!

Gruß L :19:
Hallöchen,

hier mal ein paar Beispiele, was funktioniert ...

Sub test()
MsgBox Range("A1:X1").Address
MsgBox Range(Columns(1), Columns(24)).Address
MsgBox Evaluate("columns(A:X)")
MsgBox Evaluate("columns(X:Y)")
End Sub