Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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
Inhaltsverzeichnis

Dauer eines Zellinhalts

Dauer eines Zellinhalts
Felix
Hallo,
ich würde gerne in einer Zelle darstellen, wie lange ein bestimmer Wert in einer anderen Zelle eingetragen war/ ist.
z.B.:
Es steht Wert "X" in Zelle A1 vom 20.6.2011 bis zum 23.6.2011. Dann ändert jemand Zelle A1 zu "Y". In Zelle B1 soll jetzt automatisch "X" und in C1 der Wert 3 Tage eingetragen werden. Wird in A1 "Z" eingetragen, wird in B2 "Z" und in C2 die Dauer, die "Z" in A1 eingetragen ist, errechnet.
Hoffe das ist verständlich. Schätze es geht nur mit VBA. Mit einer Lösung würdet ihr mir einen riesen Gefallen tun!!
Danke!
Felix

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nein, ist nicht verständlich ...
25.06.2011 21:40:50
Matthias
Hallo
Hoffe das ist verständlich.
NEIN! - nicht verständlich
Es steht Wert "X" in Zelle A1 vom 20.6.2011 bis zum 23.6.2011.
Dann ändert jemand Zelle A1 zu "Y".
In Zelle B1 soll jetzt automatisch "X" und in C1 der Wert 3 Tage eingetragen werden.

Dann musst Du also auch irgendwo das Datum der letzten Änderung speichern.
Woher soll den Excel sonst wissen seit wann in A1 der Wert "X" steht?
Userbild
AW: Dauer eines Zellinhalts
25.06.2011 21:58:24
Josef

Hallo Felix,
kopiere den Code in das Modul der entsprechenden Tabelle.
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim dateLastChangeA1 As Date
  Dim vntLastValueA1 As Variant
  If Target.Address(0, 0) = "A1" Then
    On Error GoTo ErrExit
    Application.EnableEvents = False
    dateLastChangeA1 = GetCustProp("LastChangeA1", 0)
    If dateLastChangeA1 = 0 Then
      SetCustProp "LastChangeA1", Date
      SetCustProp "LastValueA1", Target
    Else
      Range("B1:C1").Insert xlDown
      Range("B1") = GetCustProp("LastValueA1")
      Range("C1") = Date - dateLastChangeA1
      SetCustProp "LastChangeA1", Date
      SetCustProp "LastValueA1", Target
    End If
  End If
  ErrExit:
  Application.EnableEvents = True
End Sub

Private Function GetCustProp(propName As String, Optional propValue As Variant) As Variant
  ' Wert aus Dateieigenschaft auslesen. Wenn nicht vorhanden
  ' Anlegen und Optional mit Startwert belegen
  Dim propType As MsoDocProperties
  If Not IsMissing(propValue) Then
    Select Case VarType(propValue)
      Case vbString
        propType = msoPropertyTypeString
      Case vbBoolean
        propType = msoPropertyTypeBoolean
      Case vbByte, vbInteger, vbLong
        propType = msoPropertyTypeNumber
      Case vbSingle, vbDouble
        propType = msoPropertyTypeFloat
      Case vbDate
        propType = msoPropertyTypeDate
      Case Else
    End Select
  End If
  With ThisWorkbook
    On Error GoTo NoName
    GetCustProp = .CustomDocumentProperties(propName).Value
    Exit Function
    NoName:
    If Err.Number = 5 Then
      Err.Clear
      .CustomDocumentProperties.Add _
        Name:=propName, _
        LinkToContent:=False, _
        Type:=propType, _
        Value:=propValue
      GetCustProp = propValue
    End If
  End With
End Function

Private Function SetCustProp(propName As String, propValue As Variant)
  ' Wert in Dateieigenschaft schreiben. Wenn nicht vorhanden
  ' Anlegen und Wert eintragen
  Dim propType As MsoDocProperties
  Select Case VarType(propValue)
    Case vbString
      propType = msoPropertyTypeString
    Case vbBoolean
      propType = msoPropertyTypeBoolean
    Case vbByte, vbInteger, vbLong
      propType = msoPropertyTypeNumber
    Case vbSingle, vbDouble
      propType = msoPropertyTypeFloat
    Case vbDate
      propType = msoPropertyTypeDate
    Case Else
  End Select
  With ThisWorkbook
    On Error GoTo NoName
    .CustomDocumentProperties(propName).Value = propValue
    Exit Function
    NoName:
    If Err.Number = 5 Then
      Err.Clear
      .CustomDocumentProperties.Add _
        Name:=propName, _
        LinkToContent:=False, _
        Type:=propType, _
        Value:=propValue
    End If
  End With
End Function



« Gruß Sepp »

Anzeige
AW: Dauer eines Zellinhalts
27.06.2011 08:57:30
Felix
Vielen Dank Sepp für diese Lösung! Das ist es was ich gesucht hatte!! Das Datum über die Dateieigenschaften, genial!!
Da diese neue Funktionalität meiner Exceldatei ganz neue Möglichkeiten gibt, habe ich meine Datei noch etwas weiterentwickelt. Leider muss ich dafür deinen Code abändern, was ich aber nicht alleine zustande bekomme:
Der Wert von A1 ist nicht beliebig, sondern wird aus einer Liste von 8 Werten ausgewählt (8 verschiedene Staten). Und das in jeder vierten Zeile. Ich habe also eine Liste von 8 Werten, die ich für die Zellen A1, A5, A9, A13 usw. auswählen kann (Der Benutzer wählt einen Status in jeder vierten Zeile des Tabellenblatts).
Könnte ich jetzt in einem separaten Blatt eine Tabelle erstellen, die mir das auswertet? Sprich ich habe in den Zeilen 1 bis 8 meine 8 Staaten. In den Spalten wird dann die Dauer angegeben, wie lange der Wert eingetragen war?
Hoffe das ist verständlich. Wie kann man sich revangieren für die Hilfe?
Grüße,
Felix
Anzeige
AW: Dauer eines Zellinhalts
27.06.2011 19:29:31
Josef

Hallo Felix,
da wäre eine Beispieldatei hilfreich, sie sollte vom Aufbau her dem Original entsprechen.
Und pack auch eine detaillierte Beschreibung rein, was, wie, wann und wo gespeichert werden soll!

« Gruß Sepp »

AW: Dauer eines Zellinhalts
28.06.2011 12:11:20
Felix
Hallo Sepp,
anbei die Originaldatei (etwas abgespeckt). Im worksheet "VCE" findest du in Spalte A und G Kommentare. Auf dieses sheet greifen verschiedene Personen zu und ändern Status.
Im worksheet "report" soll dargestellt werden, welches Thema wie lange in welchen Status war (Kommentage in Zellen A5 und C5)
Hoffe das ist übersichtlich für dich.
hier die Datei:

Die Datei https://www.herber.de/bbs/user/75487.xlsm wurde aus Datenschutzgründen gelöscht


Danke und Grüße,
Felix
Anzeige
AW: Dauer eines Zellinhalts
28.06.2011 19:34:04
Josef

Hallo Felix,
da muss man einen ganz anderen Weg einschlagen.
Teste mal die Datei im Anhang.
https://www.herber.de/bbs/user/75497.xlsm

« Gruß Sepp »

AW: Dauer eines Zellinhalts
30.06.2011 14:39:33
Felix
Sepp,
ich bin begeistert!
Keine Ahnung wie lange du für sowas brauchst, aber ich weiß es zu schätzen!
Vielen Dank!
Grüße,
Felix
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige