Anzeige
Archiv - Navigation
924to928
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
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe bei Makro

Hilfe bei Makro
16.11.2007 16:30:00
Thomas_F
Hallo Experten
Ich habe mir eine Tabelle für Arbeitszeien erstellt, und in der Recherche ein Makro gefunden um die Uhrzeiten ohne Doppelpunkt eingeben zu können.
Nun zu meinem Problem :
Ich kann keine Zeiten von zB 0:00 bis 0:50 eingeben dann kommt als ergebniss zB 50:00
Warum ist das so ?
Dessweiteren benötige ich noch Hilfe zu einem Makro, welches mir in F10:F40 eingegebene klein Buchstaben in groß Umwandelt. Dieses Makro habe ich bei Hajo-Excel.de gefunden.
Als Anhang habe ich die Tabelle einmal angehangen, es wäre Nett wenn sich die einmal jemand anschauen könnte bzw würde um mir weiter zu Helfen und mir zu sagen was ich FALSCH gemacht habe.
https://www.herber.de/bbs/user/47796.xls
MfG
Thomas

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Makro
16.11.2007 16:36:37
Hajo_Zi
Hallo Thomas,
Du hast in der Tabelle 2x das Ereignis Change das geht nicht.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s%, m%
'Soll nur bei einer Eingabe in Spalte A wirksam werden:
If Target.Column = 6 Or Target.Column = 7 Or Target.Column = 8 Or Target.Column = 9 Or  _
Target.Column = 22 Or Target.Column = 23 Then
With Cells(Target.Row, Target.Column)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
.NumberFormat = "[h] : 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 If
'* H. Ziplies                                     *
'* 16.05.07                                       *
'* erstellt von Hajo.Ziplies@web.de               *
'* http://Hajo-Excel.de/
'   erster Buchstabe in Zelle Groß Rest Klein
Dim RaBereich As Range, RaZelle As Range
'   Bereich der Wirksamkeit
Set RaBereich = Range("F10:F40")
'   noch mehr Bereiche
'    Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17 , C19:AG19 ,  C21: _
AG21 , C27:AE27 , C29:AE29, C31:AE31, C33:AE33"), _
'        Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49 ,C51:AG51 , C53: _
AG53 , C59:AF59 , C61:AF61 , C63:AF63 , C65:AF65"), _
'        Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81 , C83:AG83 ,  _
C85:AG85 ,C91:AF91 , C93:AF93 , C95:AF95 , C97:AF97"), _
'        Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111 , C113:AG113 , C115: _
AG115 , C117:AG117 , C123:AG123 , C125:AG125"), _
'        Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139 , C141:AF141 ,  _
C143:AF143 , C145:AF145 , C147:AF147 , C149:AF149"), _
'        Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163 , C165:AG165 ,  _
C171:AF171 , C173:AF173 , C175:AF175 , C177:AF177 "), _
'        Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191 , C193:AG193 ,  _
C195:AG195 , C197:AG197"))
'   die veränderten Zellen die im überwachten Bereich liegen auf die Variable schreiben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then            ' geänderte Zellen liegen im überwachten  _
Bereich
'        ActiveSheet.Unprotect                   ' Schutz aufheben
Application.EnableEvents = False        ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False      ' Bildschirmaktualisierung aus
For Each RaZelle In RaBereich           ' Schleife über alle geänderten Zellen im ü _
berwachten Bereich
If RaZelle  "" Then
'               Schreibweise ändern entsprechend Vorgabe
RaZelle.Value = UCase(Mid(RaZelle.Value, 1, 1)) & LCase(Mid(RaZelle.Value, 2,  _
Len(RaZelle.Value) - 1))
End If
Next RaZelle
Application.ScreenUpdating = True       ' Bildschirmaktualisierung ein
Application.EnableEvents = True         ' Reaktion auf Eingabe ein
'        ActiveSheet.protect                     ' Schutz setzen
End If
Set RaBereich = Nothing                     ' Variable löschen
End Sub
' oder
' MsgBox WorksheetFunction.Proper(Range("A1").Value)
' PROPER ist GROSS2
' von Boris



Anzeige
AW: Hilfe bei Makro
16.11.2007 17:03:00
Thomas_F
Hallo Hajo
Vielen Dank für die schnelle Antwort, ich habe den Code von dir jetzt einmal so eingefügt und folgendes Problem !
Wenn ich nun 600 für 6:00 Uhr eingebe dann bekomme ich den Wert 0,25 was hat das jetzt auf sich, und könntest mir bei den anderen Fehlern auch noch etwas weiter Helfen ?
Gruß
Thomas

AW: Hilfe bei Makro
16.11.2007 17:34:42
Thomas_F
noch offen

AW: Hilfe bei Makro
16.11.2007 18:59:00
IngGi
Hallo Thomas,
wenn du die betreffende Zelle mit dem Zahlenformat "h:mm" formatierst, wird dir die Uhrzeit korrekt als 6:00 angezeigt. Der Wert 0,25 für 6:00 Uhr stimmt genau. Uhrzeiten werden excelintern immer als Bruchteile eines Tages betrachtet. Um 12:00 Uhr ist der halbe Tag vorbei, das entspricht daher dem Wert 0,5. Und um 6:00 Uhr ist eben ein Viertel Tag vorbei = 0,25!
Gruß Ingolf

Anzeige
AW: Hilfe bei Makro
16.11.2007 18:59:00
Hajo_Zi
Hlalo Thoams,
die Zelle ist nicht als Uhrzeit formatiert.
Gruß Hajo

AW: Hilfe bei Makro
16.11.2007 19:51:00
Thomas_F
Hallo Hajo und IngGi
Die Zellen sind in [h]:mm Formatiert, dieses wird soviel ich gesehen sogar vom Makro her so Formatiert.
Trotzdem erscheint der Wert 0,25 in der jeweiligen Zelle.
Ich habe die Aktuelle Datei nochmal mit angehangen zum ansehen das sie in Uhrzeit Formatiert sind.
Habt ihr für die anderen Punkte denn auch eine Lösung für mich welche im Kommentarfenster zu lesen sind ?
Bitte nochmal um Hilfe
Gruß
Thomas

Anzeige
AW: Hilfe bei Makro
16.11.2007 20:24:34
Hajo_Zi
Hallo Thomas,
in dem Code der Datei wird die Formatierung nicht vorgenommen.
Gruß Hajo

AW: Hilfe bei Makro
16.11.2007 19:52:00
Thomas_F
Hallo Hajo und IngGi
Die Zellen sind in [h]:mm Formatiert, dieses wird soviel ich gesehen sogar vom Makro her so Formatiert.
Trotzdem erscheint der Wert 0,25 in der jeweiligen Zelle.
Ich habe die Aktuelle Datei nochmal mit angehangen zum ansehen das sie in Uhrzeit Formatiert sind.
Habt ihr für die anderen Punkte denn auch eine Lösung für mich welche im Kommentarfenster zu lesen sind ?
Bitte nochmal um Hilfe
https://www.herber.de/bbs/user/47802.xls
Gruß
Thomas

Anzeige
AW: Hilfe bei Makro
16.11.2007 20:27:00
Hajo_Zi
Hallo Thomas,
auch in dieser Datei wird die Formatierung nicht vorgenommen.
Gruß Hajo

AW: Hilfe bei Makro
16.11.2007 20:33:00
Thomas_F
Hallo Hajo
Ist doch seltsam, hast du mal auf Standart Formatiert und dann eine Uhrzeit eingegeben ?
Wenn ich das mache, dann ist die Zelle wieder auf [h]:mm Formatiert und der Wert 0,25 drine. Also muß
es doch etwas mit dem Makro zu tun haben.
Was ist denn da bitte Falsch dran das es nicht geht ?
So komme ich jedenfalls nicht weiter hier :-(
Gruß
Thomas

AW: Hilfe bei Makro
16.11.2007 20:42:00
Hajo_Zi
Hallo THoams,
ich benutze folgenden Code

Option Explicit
'* H. Ziplies                                     *
'* 28.12.02; 01.10.06                             *
'* erstellt von Hajo.Ziplies@web.de               *
'* http://Hajo-Excel.de/
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub
Dim RaBereich As Range                      ' Bereich der Wirksamkeit
Dim RaZelle As Range                        ' zur Zeit untersuchte Zelle
Dim InS As Integer                          ' Variable für Stunde
Dim InM As Integer                          ' Variable für Minute
Dim InSe As Integer                         ' Variable für Sekunde
Set RaBereich = Range("D4:E10, H4:H10")     ' Bereich der Wirksamkeit festlegem
'   noch mehr Bereiche
'    Set RaBereich = Union(Range("C7:I26"), Range("L7:R26"), Range("U7:AA26"), Range("AD7:AJ26") _
)
'    ActiveSheet.Unprotect "Password"        ' Schutz der Tabelle aufheben
Application.EnableEvents = False            ' Reaktion auf Zellveränderung abschalten
For Each RaZelle In Range(Target.Address)   ' Schleife falls mehr als eine Zelle mit einmal  _
verändert
If Not Intersect(RaZelle, RaBereich) Is Nothing Then    ' Zelle ist im Bereich der  _
Wirksamkeit
With RaZelle
If .Value  "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
If Len(Target.Value) > 4 Then           ' es wurden Stunden eingeben
InS = Left(.Value, Len(.Value) - 4)
InM = Mid(.Value, Len(.Value) - 3, 2)
InSe = Right(.Value, 2)
ElseIf Len(Target.Value) > 2 Then           ' es wurden keine Stunden  _
eingegeben
InS = 0
InM = Left(.Value, Len(.Value) - 2)
InSe = Right(.Value, 2)
Else                                    ' es wurden nur Sekunden  _
eingegeben
InS = 0
InM = 0
InSe = .Value
End If
.NumberFormat = "[h]:mm:ss"             ' Zellformat setzen
.Value = InS & ":" & InM & ":" & InSe   ' Zeit in Zelle schreiben
End If
End If
End With
End If
Next RaZelle
'    ActiveSheet.protect "Password"          ' Schutz der Tabelle aufheben
Application.EnableEvents = True         ' Reaktion auf Zellveränderung einschalten
End Sub


oder abgespeckte Version.
Gruß Hajo

Anzeige
AW: Hilfe bei Makro
16.11.2007 21:00:00
Thomas_F
Hallo Hajo
Vielen Dank
Aber ich komme so nicht weiter mit den Hilfen hier, dachte das einem hier etwas besser geholfen wird wenn man die datei mit anhängt. Aber dem war und ist ja anscheind nicht so, sonst würde mir ja jemand sagen können von Euch wo bei mir in der Datei der Fehler begraben ist und mir auch eine Hilfestellung zu meinen anderen offenen Fragen eine Auskunft geben.
ICH GEBE AUF mich mit Excel zu Beschäftigen und schreibe lieber per Hand alles auf.
Besten Dank Trotzdem
Gruß
Thomas

AW: Hilfe bei Makro
16.11.2007 21:14:00
Hajo_Zi
Halo Thomas,
ih habe es nun schon zig mal erwähnt das bei Dir die Zelle nicht formatiert wird, wenn Du das nicht umsetzen ,möchtest kann ich nichts dafür.
Gruß Hajo

Anzeige
AW: Hilfe bei Makro
16.11.2007 21:23:00
Thomas_F
Hallo Hajo
Ich habe die Zellen in h:mm Formatiert, wenn du dir die Datei einmal anschauen würdest dann würdest du es sehen das sie so Formatiert sind.
Gruß
Thomas

AW: Hilfe bei Makro
16.11.2007 21:34:00
Hajo_Zi
Halo Thomas,
es geht nicht darum wie die Zelle formatiert war.
Gruß Hajo

AW: Hilfe bei Makro
16.11.2007 21:52:57
Thomas_F
Hallo Hajo
Dann sag mir doch Bitte was an dem Makro noch geändert werden muß damit das Format h:mm ist ?
Denn icht probiere auch schon die ganze zeit den letzten code von dir, und da bekomme ich wenn ich 600 für 6:00 eingebe und bei 0030 für 00:30 auch nicht den Werte zustande.
Irgendetwas ist doch Faul an der Sache ! :-(
Gruß
Thomas

Anzeige
AW: Hilfe bei Makro
16.11.2007 22:18:11
Hajo_Zi
Hallo Thomas,
ich hatte meinen Code gepostet und dort wurde formatiert.
Gruß Hajo

AW: Hilfe bei Makro
16.11.2007 22:33:00
Thomas_F
Ich sage ja TOLLE HILFe hier
Damit kann man aber auch nicht 0020 = 00:20 erreichen mit dem Code, und bei eingabe von 600 für 6:00 Uhr erscheint in dem Code auch 0,25 !!!!!!!!!!!!!!!!!!!!!!!!!!
immer nur um den Heißen brei reden, Hilft nen Anfänger auch nicht richtig weiter hier.
Also
Danke für die auch nicht Erfolgreiche Hilfe
Gruß
Thomas

AW: Hilfe bei Makro
16.11.2007 22:57:00
Tino
Hallo,
versuche es mal hiermit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim Zeit As String
Set Bereich = Range("D4:E10, H4:H10")
If Intersect(Target, Bereich) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target = 1000 Then
Zeit = Left(Target, 2) & ":" & Right(Target, 2) & ":00"
Else
Application.EnableEvents = True
Exit Sub
End If
Target = Format(CDate(Zeit), "hh:mm:[ss]")
Application.EnableEvents = True
End Sub


Gruss
Tino

Anzeige
AW: Hilfe bei Makro
16.11.2007 23:30:12
Thomas_F
Hallo Tino
Super Danke, der Funzt nun anscheinend richtig.
Nun noch eine Frage: Was muß ich machen an dem Code damit mir die Zeit 06:00 habe das mir die nur in 6:00 angezeigt wird ?
Und würdest Du mir noch dabei behilflich sein mir folgenden Code noch mit einbauen, denn der funzt jetzt dadurch nivht mehr ?
'**************************************************
'* H. Ziplies *
'* 16.05.07 *
'* erstellt von Hajo.Ziplies@web.de *
'* http://Hajo-Excel.de/ *
'**************************************************
' alle Buchstaben groß in einem bestimmten Bereich
' Spalte 6(F)
Dim RaZelle As Range
Application.EnableEvents = False ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False ' Bildschirnaktualisierung aus
For Each RaZelle In Range(Target.Address) ' Schleife über alle geänderten Zellen
If RaZelle.Column = 6 Then
RaZelle = UCase(RaZelle) ' Inhalt umwandeln in groß
End If
Next RaZelle
Application.ScreenUpdating = True ' Bildschirmaktalisierung ein
Application.EnableEvents = True ' Reaktion auf Eingabe ein
End Sub
Wäre Nett von Dir, werde es aber hier jetzt auch noch weiter Probieren.
Ansonsten ohne diesen Code Funzt das schon einmal soweit ganz gut.
Gruß
Thomas

Anzeige
AW: Hilfe bei Makro
16.11.2007 23:57:38
Tino
Hallo,
so müsste es mit dem anderen Code zusammen gehen.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, RaZelle As Range
Dim Zeit As String
'*Spalte F mit Großbuchstaben**********************************
Application.EnableEvents = False ' Reaktion auf Eingabe aus
Application.ScreenUpdating = False ' Bildschirnaktualisierung aus
For Each RaZelle In Range(Target.Address) ' Schleife über alle geänderten Zellen
If RaZelle.Column = 6 Then
RaZelle = UCase(RaZelle) ' Inhalt umwandeln in groß
End If
Next RaZelle
Application.EnableEvents = True ' Reaktion auf Eingabe ein
Application.ScreenUpdating = True
'Uhrzeit umschreiben###########################################
Set Bereich = Range("D4:E10, H4:H10") 'Bereich für Uhrzeit Anpassung
If Intersect(Target, Bereich) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target = 1000 Then
Zeit = Left(Target, 2) & ":" & Right(Target, 2) & ":00"
Else
Application.ScreenUpdating = False
Application.EnableEvents = True
Exit Sub
End If
Target.NumberFormat = "[h]:mm"
On Error Resume Next
Target = Format(CDate(Zeit), "h:mm:ss")
On Error GoTo 0
Application.ScreenUpdating = False
Application.EnableEvents = True
End Sub


Gruss
Tino

AW: Hilfe bei Makro
17.11.2007 00:15:00
Thomas_F
Hallo Tino
Super Danke das Haut jetzt soweit hin wie es soll.
Das nenne ich wenigstens Hilfe, nun kann ich mir auch ein Bild davon machen.
Nun noch ein Frage ich habe möchte die Zelle in [Rot]- [h] : mm Formatieren, da ich da Manuel die Minusstunden vom Vorjahr eintrage.
Kann ich das auch über dem Code mit machen ?
Gruß
Thomas

AW: Hilfe bei Makro
17.11.2007 00:41:00
Tino
Hallo,
ersetze die zwei Zeilen
Target.NumberFormat = "[h]:mm:ss"
durch
Target.NumberFormat = "[Red]-[h]:mm"
gruss
Tino

AW: Hilfe bei Makro
17.11.2007 01:02:00
Thomas_F
Hi Tino
Sorry soweit hatte ich das auch schon hingebastelt, hatte nur vergessen dazu zu schreiben das dieses nur die Zelle H43 betreffen soll das Format "[Red]-[h]:mm"
Gruß
Thomas

AW: Hilfe bei Makro
17.11.2007 01:17:00
Tino
Hallo,
füge diese Zeile direkt nach der Deklarierung als neue Zeile ein.
Also nach dem letzten Dim ...
Range("H27").NumberFormat = "[Red]-[h]:mm"
Gruss Tino

AW: Hilfe bei Makro
17.11.2007 01:37:43
Thomas_F
Hallo
Alles Klar nun ist dat in Ordnung denke ich einmal.
Vielen Dank noch einmal für deine Echte Müühe und Hilfe
Schönes We
Gruß
Thomas

AW: Hilfe bei Makro
17.11.2007 03:11:38
Thomas_F
Hallo Tino nochmal
Gib es noch eine möglich ´keit wenn ich die Zeiten aus den angegeben Zellen lösche das dann nicht die
Zeit von 00:00:00 in der Zelle steht, das ist jetzt nämlich noch der Fall wenn ich Zeien eingegeben habe und diese dann lösche.
Tausend Dank noch einmal
Gruß
Thomas

AW: Hilfe bei Makro
17.11.2007 11:22:00
Tino
Hallo,
ersetze

If Target 


durch


If Target 


Gruss
Tino

AW: Hilfe bei Makro
18.11.2007 13:47:00
Micha
Hallo Tino
Sorry bin erst jetzt dazu gekommen weiter zu machen.
Nun geht es wie ich mir es vorgestellt habe. Besten Dank für deine Hilfe, habe nun doch noch etwas Dazu lernenen können.
Schönes WE noch
Gruß
Thomas

AW: Hilfe bei Makro
18.11.2007 14:40:01
Micha
Sorry hier bin ich im falschen Therad gelandet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige