Microsoft Excel

Herbers Excel/VBA-Archiv

Excel mit Zeit rechnen | Herbers Excel-Forum


Betrifft: Excel mit Zeit rechnen von: Ronni
Geschrieben am: 24.07.2012 21:52:23

Hallo zusammen,

ich hoffe man kann mir hier helfen.

Mein Problem:

Wenn ich in Zelle A1 einen Text eingebe, dann soll mir in Zelle C1 die Zeit in h:m:s angezeigt werden.

in Formel Sachen bei Excel muß ich bis auf Standard + , -, Summe paar kleine Regeln mit Farbgebung passen.

Ich hoffe ihr könnt mir helfen.

Gruß

Ronni

  

Betrifft: AW: Excel mit Zeit rechnen von: Ramses
Geschrieben am: 24.07.2012 22:01:03

Hallo

Also ich versteh das mal so:
Du gibst in A1 einen Text ein, oder überschreibst einen bestehenden Text, und in C1 soll dann die zeit stehen, wann der Text in A1 eingegeben oder überschrieben wurde.

Rechte Maustaste auf den Tabellenreiter deiner Tabelle wo das funktionieren soll
"Code anzeigen"
Dort den nachfolgenden Code reinkopieren

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Not IsNumeric(Target) And Not IsEmpty(Target) Then
    Range("C1").Value = Format(Now, "hh:mm:ss")
ElseIf IsEmpty(Target) Then
    Range("C1").Value = "A1 Gelöscht um: " & Format(Now, "hh:mm:ss")
End If
End Sub
Gruss Rainer


  

Betrifft: AW: Excel mit Zeit rechnen von: Ronni
Geschrieben am: 25.07.2012 08:44:35

Hallo Rainer,

das hast du richtig verstanden und es funktioniert tadellos.

Müßte dich aber noch einmal belästigen.

wenn ich diese Formel jetzt auf weitere Zellen erweitern möchte z.B.

Eingabe A1 - Zeitanzeige auf C1
Eingabe A2 - Zeitanzeige auf C2
Eingabe A3 - Zeitanzeige auf C3

usw.

was muß ich dann noch ändern, Summe kann ich ja hier nicht ziehen.

mit dank im voraus

Ronni


  

Betrifft: AW: Excel mit Zeit rechnen von: Reinhard
Geschrieben am: 25.07.2012 08:58:32

Hallo Ronni,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Application.EnableEvents = False
Set Target = Intersect(Target, Columns(1))
If Target Is Nothing Then Exit Sub
For Each Zelle In Target
  If Not IsNumeric(Zelle) And Not IsEmpty(Zelle) Then
    Zelle.Offset(0, 2).Value = Format(Now, "hh:mm:ss")
  ElseIf IsEmpty(Target) Then
    Zelle.Offset(0, 2).Value = Zelle.Address(0, 0) & " gelöscht um: " & Format(Now, "hh:mm:ss")
  End If
Next Zelle
Application.EnableEvents = True
End Sub

Gruß
Reinhard


  

Betrifft: AW: Excel mit Zeit rechnen von: Ronni
Geschrieben am: 25.07.2012 12:10:58

Hallo zusammen,

ich noch einmal, nun hat man mir gesagt das ich es von Anfang an falsch verstanden habe.
Vom Grundweg her schon richtig aber doch falsch.
Alles was ihr mir hier geschrieben habt funktioniert soviel schon mal vorab.

Nun wird es für mich absolut schwierig und ich weiß nicht ob es überhaupt realisierbar ist.

Also,

Wenn in Zelle B8 bis hinunter zu B56 ein Eintrag vorgenommen wird, soll mir Excel in der jeweiligen Zelle daneben in der jeweiligen Zelle C8 bis hinunter zu C56 die jeweilige Zeit anzeigen (B8 Eintrag und Zeitanzeige in C8)

Hier jedoch auch noch zusätzlich
bei Eintrag in D8 bis D56 die Einträge in E8 bis E56
bei Eintrag in F8 bis F56 die Einträge in G8 bis G56
und noch bei Eintrag in H8 bis H56 in I8 bis I56 anzeigen.

Ist das möglich???

Dank im voraus

Gruß Ronni


  

Betrifft: AW: Excel mit Zeit rechnen von: Ramses
Geschrieben am: 26.07.2012 21:59:27

Hallo

Probiers mal

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
    Case 2, 4, 6, 8
        If Target.Row > 7 And Target.Row < 57 Then
            If Not IsNumeric(Target) And Not IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Format(Now, "hh:mm:ss")
            ElseIf IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Target.Address(0, 0) & " gelöscht um: " & Format( _
Now, "hh:mm:ss")
            End If
        End If
End Select
Application.EnableEvents = True
End Sub
Sollte relativ leicht anzupassen sein an weitere Spalten oder zeilen

Gruss Rainer


  

Betrifft: AW: Excel mit Zeit rechnen von: Ronni
Geschrieben am: 28.07.2012 11:51:34

Hallo Rainer,

danke für die Hilfe, das ist perfekt.

Eine Frage habe ich noch.

wie man Zellen sperrt weiß ich, jedoch noch mal als Nachfrage.

Kann ich Zellen für die manuelle Eingabe sperren, jedoch durch eine Eingabe durch eine Formel frei lassen?

Beispiel: in D1 liegt eine Formel die B1+C1 lautet, nun möchte ich in d1 eine manuelle Eingabe machen, diese soll nicht gestattet werden. jedoch gebe ich in B1 und C1 einen Wert ein soll dies ausgeführt werden.

Gruß

Ronni


  

Betrifft: AW: Excel mit Zeit rechnen von: Ramses
Geschrieben am: 28.07.2012 17:34:52

Hallo

Um dir das nicht lange erklären zu müssen, schau dir das mal an

http://www.online-excel.de/excel/singsel.php?f=184

Gruss Rainer


  

Betrifft: AW: Excel mit Zeit rechnen von: Ronni
Geschrieben am: 29.07.2012 13:00:05

Hallo Rainer,

dieses Prinzip habe ich schon verstanden, jedoch hilft es mir leider nicht weiter.

Ich habe mich hier wohl total bescheiden ausgedrü

Ich habe in dem Tabellenblatt diese VBA von dir stehen umgeändert

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
    Case 3, 5, 7, 9
        If Target.Row > 5 And Target.Row < 57 Then
            If Not IsNumeric(Target) And Not IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Format(Now, "hh:mm")
            ElseIf IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Target.Address(0, 0) & " gelöscht um: " & Format( _
Now, "hh:mm")
            End If
        End If
End Select
Application.EnableEvents = True
End Sub
und nun kommt die Frage, wenn ich nun die Zellen in denen die Zeit eingetragen wird (D7 - D57) (F7 - F57) (H7 - H57) und (J7 - J57) sperre und das Blatt oder die Mappe schütze, kann die Formel den Eintrag nicht einfügen da sie gesperrt sind.

Nun weiß ich nicht, da absoluter Laie wie ich das in VBA ändern oder schreiben kann damit ich die Zellen für manuelle Eingaben sperren kann, aber durch VBA COde beschrieben werden kann.

Gruß

Ronni


  

Betrifft: AW: Excel mit Zeit rechnen von: Ramses
Geschrieben am: 29.07.2012 20:40:31

Hallo

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ActiveSheet.Unprotect "DeinPasswort"
Select Case Target.Column
    Case 3, 5, 7, 9
        If Target.Row > 5 And Target.Row < 57 Then
            If Not IsNumeric(Target) And Not IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Format(Now, "hh:mm")
            ElseIf IsEmpty(Target) Then
                Target.Offset(0, 1).Value = Target.Address(0, 0) & " gelöscht um: " & Format( _
Now, "hh:mm")
            End If
        End If
End Select
ActiveSheet.Protect "DeinPasswort"
Application.EnableEvents = True
End Sub

Gruss Rainer


Beiträge aus den Excel-Beispielen zum Thema "Excel mit Zeit rechnen"