4 Zahlen als Uhrzeit im selben Feld
#1
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
Top
#2
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
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Top
#3
Hallo Linki,
If Not Intersect(Target, Range("A:X")) Is Nothing Then
@Guschti, bevor Du solchen Mist postest, teste es bitte!

Gruß Uwe
Top
#4
(15.02.2018, 00: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
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Top
#5
@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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Das gabs vor einem Jahr ähnlich auch hier:

http://www.clever-excel-forum.de/thread-8379.html
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#7
Dann hoffe ich mal, dass dieser Thread nicht ebenso "ausartet".  :21:
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
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:
Top
#9
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste