statischer Datumseintrag

  • #1
G

Ginkgo

Bekanntes Mitglied
Themenersteller
Dabei seit
27.01.2005
Beiträge
66
Reaktionspunkte
0
Ort
Hannover
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
 
Thema:

statischer Datumseintrag

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben