statischer Datumseintrag

Dieses Thema statischer Datumseintrag im Forum "Microsoft Office Suite" wurde erstellt von Ginkgo, 7. Apr. 2005.

Thema: statischer Datumseintrag Moin, wie kann ich denn ein Datum in eine Zelle eintragen lassen aber das soll sich nicht ändern am nächsten Tag....

  1. Moin,

    wie kann ich denn ein Datum in eine Zelle eintragen lassen aber das soll sich nicht ändern am nächsten Tag.
    Die Sache ist wenn Zelle A den Wert 10 erreicht soll in Zelle B das Datum stehen an dem der Wert erreicht wurde. Habe mir das mit einer IF Funktion zurechtgebaut. Problem ist nur, dass ich bisher nur ein Datum mit NOW() einfügen konnte und das hat sich natürlich prompt am nächsten Tag geändert.
    Wie kann ich das verhindern?
    Danke

    Ciao
     
  2. Das geht nur mit einem Makro, das auf Kommando oder beim Schließen der Datei alle Datums-Zellen im betreffenden Bereich abgrast und bei vorliegenden Datumswerten folgendes ausführt:
    Code:
      Selection.Copy
      Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    
    Damit wird die Formel durch den festen Wert ersetzt und kann sich nicht mehr ändern.
    Wie das Ganze beim Schließen der Tabelle angeleihert wird, weiß ich nicht. Warten wir auf Matjes.

    die Formel im Datumsfeld würde ich so gestalten:
    =WENN(A1>=10;HEUTE();) Dann steht nix in der Zelle, solange der Wert der Referenz-Zelle (oim Beispiel A1) unter 10 liegt.
     
  3. Hi zusammen,

    der Makro zum Datum einfügen in B2 eines Tabellenblattes, wenn A2 der Wert >= 10 hat. Das ganze nur beim ersten  erreichen/überschreitet des Grenzwertes.
    Code:
    'Definition Überwachungszelle A2
    Const c_ZelleUeberwachung_Zeile = 2
    Const c_ZelleUeberwachung_Spalte = 1
    Const c_ZelleUeberwachung_Grenzwert = 10
    'Definition Datumszelle B2
    Const c_ZelleDatum_Zeile = 2
    Const c_ZelleDatum_Spalte = 2
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      Dim Zelle As Range
      For Each Zelle In Target
        If Zelle.Row = c_ZelleUeberwachung_Zeile And _
           Zelle.Column = c_ZelleUeberwachung_Spalte Then
         ->es hat sich was in der überwachten Zelle getan
          
          If ActiveSheet.Cells(c_ZelleUeberwachung_Zeile, _
                               c_ZelleUeberwachung_Spalte).Value _
              >= c_ZelleUeberwachung_Grenzwert Then
           ->Grenzwert erreicht/ueberschritten
            
            If ActiveSheet.Cells(c_ZelleDatum_Zeile, _
                               c_ZelleDatum_Spalte).Value _
              =  Then
             ->Datum ist noch leer
              
             ->Datum setzen
              ActiveSheet.Cells(c_ZelleDatum_Zeile, _
                               c_ZelleDatum_Spalte).Value = _
                Format(Now(), dd.mm.yyyy)
            End If
          End If
        End If
      Next
    End Sub
    Der Makro muß in der Code-Seite des Tabellenblattes liegen:

    1) Excel-Datei öffnen
    2) VB-Ediotr öffnen Alt+F11
    Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
    In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
    3) VBAProject(Tabelle) doppelt klicken
    in der Mitte geht das Code-Fenster Mappe1-Tabelle(Code) auf
    4) den gesamten Code per copy und Paste in dieses Fenster hineinkopieren
    5) VB-Editor schliessen mit Alt+Q
    6) Excel-Datei speichern
    7) ausprobieren, ob ein Wert 10 in A2 ein Datum in B2 erzeugt.

    Gruß Matjes :)
     
  4. habe das ausprobiert baer es funktioniert nicht, es gibt eine fehlermeldung aus ich denke weil da schon ein makro steht, ausserdem muss das in einer festen spalte für viele zeilen gelten. Meine Versuche das Makro umzuprogrammieren resultierte nur im nicht funktionieren... :-[
     
  5. Moin,

    habe das Makro mal so abgeaendert:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Definition Überwachungsspalte
    Const c_ZelleUeberwachung_Spalte = 7
    Const c_ZelleUeberwachung_Grenzwert = 10
    'Definition Datumsspalte
    Const c_ZelleDatum_Spalte = 25

    Dim Zelle As Range
    For Each Zelle In Target

    ->In Zeile 1 (Überschriften-Zeile) keine Kennung setzen
    If Zelle.Row <> 1 Then

    If Zelle.Row = c_ZelleUeberwachung_Zeile And _
    Zelle.Column = c_ZelleUeberwachung_Spalte Then
    ->es hat sich was in der überwachten Zelle getan

    If ActiveSheet.Cells(c_ZelleUeberwachung_Zeile, _
    c_ZelleUeberwachung_Spalte).Value _
    >= c_ZelleUeberwachung_Grenzwert Then
    ->Grenzwert erreicht/ueberschritten

    If ActiveSheet.Cells(c_ZelleDatum_Zeile, _
    c_ZelleDatum_Spalte).Value _
    = Then
    ->Datum ist noch leer

    ->Datum setzen
    ActiveSheet.Cells(c_ZelleDatum_Zeile, _
    c_ZelleDatum_Spalte).Value = _
    Format(Now(), dd.mm.yyyy)
    End If
    End If
    End If
    Next
    End Sub

    aber irgendwie tut sich gar nix in Spalte 25.
    Zeile 1 ist die Überschriftenzeile und soll so bleiben und Zeile 7 die Statuszeile mit einem Pulldown von 1-10
    ich habe noch ein Makro, das in der ersten Spalte das Datum einträgt von dem Tag an dem die letzte Änderung in der Zeile war. Kann das Probleme machen?
     
  6. Hi Ginkgo,

    wenn Du in die erste Zeile der Code-Seite
    Code:
    Option Explicit
    schreibst und dann kompilierst, entdeckst Du die groben Fehler selbst  ;D

    Wenn ich das richtig verstanden habe, willst Du alle Zellen der Spalte 7 (bis auf Zeile 1) überwachen. Tritt ein Wert größer 10 auf, so soll in der korrespondierenden Zelle der Spalte 25 das aktuelle Datum eingetragen werden, wenn noch keines in dieser Zelle steht.

    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Definition Überwachungsspalte
    Const c_ZelleUeberwachung_Spalte = 7
    Const c_ZelleUeberwachung_Grenzwert = 10
    'Definition Datumsspalte
    Const c_ZelleDatum_Spalte = 25
      
      Dim Zelle As Range
      For Each Zelle In Target
      
     ->In Zeile 1 (Überschriften-Zeile) keine Kennung setzen
        If Zelle.Row <> 1 And _
           Zelle.Column = c_ZelleUeberwachung_Spalte Then
         ->es hat sich was in der überwachten Zelle getan
          
          If Zelle.Value >= c_ZelleUeberwachung_Grenzwert Then
           ->Grenzwert erreicht/ueberschritten
            
            If ActiveSheet.Cells(Zelle.Row, _
                               c_ZelleDatum_Spalte).Value _
              =  Then
             ->Datum ist noch leer
              
             ->Datum setzen
              ActiveSheet.Cells(Zelle.Row, _
                               c_ZelleDatum_Spalte).Value = _
                Format(Now(), dd.mm.yyyy)
            End If
          End If
        End If
      Next
    End Sub
    zu dem 2. Punkt:
    Wenn sich etwas beissen würde, müßte bei der Kompilierung eine Meldung erscheinen.

    Gruß Matjes  :)
     
  7. Du bist echt gut... es hat natürlich funktioniert.
    Was mich noch interessieren würde, wie wird das Fenster in dem Du den Code anzeigst so schön grau unterlegt?

    Danke Danke
     
  8. Hi Ginkgo,

    wenn ich antworte, hab ich oberhalb der Smily-Leiste BCC-Tags, welche ich einfügen kann, darunter eines welches für solche   :D  hübsch grau hinterlegten  :D  Code-Fenster gedacht ist.

    Ich weiß nicht genau, ob nur Mitglieder diese :D hübschen grau hinterlegten  :D  Code-Fenster erzeugen können. Da müssen wir mal Björn fragen.

    Gruß Matjes :)
     
  9. Wenigstens etwas kann ich zu diesem Thread beitragen:
    Wenn man nur Gast im Forum ist, hat man die Buttons für die Formatierung auch zur Verfügung. Derjenige für das schöne graue Code-Feld hat dieses Zeichen: #

    Hausfrauentrick: oben Ausloggen und schon ist man Gast  ;D

    Grüße aus der Küche,
    Klexy
     
Die Seite wird geladen...

statischer Datumseintrag - Ähnliche Themen

Forum Datum
statischer datenträger Windows 7 Forum 16. Mai 2010
Bei statischer IP bleiben Downloads hängen, bei Dynm. nicht!? Windows XP Forum 22. Juli 2010
Mehrere Gateways bei statischer Route? Netzwerk 2. Okt. 2008