8.3k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen,
ich habe folgendes Problem. Ich habe eine Tabelle in der Arbeitszeiten eingetragen werden müssen. Also einen Arbeitszeitnachweis in der die gearbeiteten Stunden eines Monats eingetragen werden. Diese Zeiten sollen immer mit einem ":"(Doppelpunkt) eingetragen werden zb. 118:30 (118 Std : 30 Min). Leider passiert es öfter das Personen diese Zeiten mit "," (Komma= oder "."(Punkt) angeben. Ist es möglich das ich diese Zeichen über ein Makro oder eine andere Methode in ":" (Doppelpunkte) umwandeln kann? Das Blatt hat Blattschutz und über die Auto-Korrektur, Ersetzen - Durch geht es auch nicht da es dann allg gespeichert und für jedes Excelblatt verwendet wird.
Kann mir jmd weiterhelfen?
Danke im vorraus.

Greetz Chris

15 Antworten

0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,

warum nicht korrekte Angaben über
Menue: Daten
Gültikeit: Zeit
erzwingen?

mfg

Wolfgang
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Wolfgang,

Es freut mich, dass sich in dieser Frage was bewegt, nachdem der Fragesteller noch kein Feedback abgegeben hatte, nahm ich an die Frage sei als gelöst anzusehen.

Eine Lösung so wie von Dir vorgeschlagen drängt sich direkt auf.

Das mit der Gültigkeitsprüfung (Zeit) habe ich mir schon vorher angesehen, wäre ideal, aber es kann nur eine Zeit zwischen 00:00:00 und 23:59:59 angegeben werden (arbeite mit Excel 2003).

Im gegenständlichen Fall aber werden z.B. 145:05 eingegeben, was die Gültigkeitsprüfung dann nicht toleriert, oder lässt sich da was machen.

Ansonsten glaube ich müsste ein Makro erstellt werden, welches genau so wirkt wie die standardmäßige Gültigkeitsprüfung, aber damit kann ich mangels Kenntnisse leider nicht dienen.

Schöne Grüße

Paul1
0 Punkte
Beantwortet von
Hallo Hajo,

ich stehe vor dem gleichen Problem wie Chris und habe nach langem Suchen diesen zum Glück sehr aktuellen Thread gefunden.

Mit deinem 2. Code klappt es bei mir leider noch nicht.
Wenn ich jetzt zum Beispiel 90,48 eingebe, schreibt er auch schön statt dem Komma einen Doppelpunkt. Nur leider scheint er die eigentlichen Stunden als Tage zu interpretieren, da bei meiner Eingabe 2171:31 rauskommt.

Wie kann das sein?
Ich habe nur geringfügig Ahnung von VBA und war sehr dankbar, diese Seite mit deinem Beitrag zu finden. Denn selbst ein "DAU" wie ich verstehe zumindest rein logisch, was gerade passiert.

Ich hoffe, dass du mir nochmal so klasse weiterhelfen kannst.

Vielen Dank schonmal
LG
Mäuschen ;)
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Tina,

der Beitrag ist nun ja scho eine weile her. Ich bekomme ihn jetzt nich mehr zum laufen und habe ihn darum verändert.

Option Explicit ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)
'**************************************************
'* H. Ziplies *
'* 02.11.10 *
'* http://Hajo-Excel.de/ *
'**************************************************
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17 , C19:AG19"), _
Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49 ,C51:AG51"), _
Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
If InStr(RaZelle.Text, ",") > 0 Then
RaZelle = (Application.RoundDown(RaZelle, 0) + Mid(RaZelle.Text, InStr(RaZelle, ",") + 1) / 60) / 24
ElseIf InStr(RaZelle.Text, ".") > 0 Then
RaZelle = (Application.RoundDown(RaZelle, 0) + Mid(RaZelle.Text, InStr(RaZelle, ".") + 1) / 60) / 24
End If
RaZelle.NumberFormat = "[hh]:mm"
Next RaZelle
'ActiveSheet.Protect ("Passwort")
Application.EnableEvents = True
End If
Set RaBereich = Nothing
End Sub


Gruß Hajo
0 Punkte
Beantwortet von
Guten Morgen Hajo,

ich habe deinen Code jetzt einfach kopiert und den "Bereich der Wirksamkeit" angepasst.

Leider kommt hier

RaZelle.NumberFormat = "[hh]:mm"

ein Fehler.

Kann das damit zusammenhängen, dass ich die Zellen schon vorher in Excel als Benutzerdefiniert [h]:mm formatiert habe?

Ich kann das leider nicht ausprobieren, da ich mit deinem eingefügten Code das Format nicht mehr "manuell" anpassen kann.

Ich hoffe, dass du mir noch heute helfen kannst, da ich am montag das Ergebnis präsentieren muss.

Vielen Dank schonmal.
LG
Tina
...