Datum automatisch vergeben

  • #1
J

joergi78

Bekanntes Mitglied
Themenersteller
Dabei seit
17.08.2005
Beiträge
249
Reaktionspunkte
0
Hallöchen,

wie lautet die Formel, dass autmatisch in einer Zelle ein Datum vergeben wird, wenn in einer anderen Zelle etwas eingetragen wird??? Das Datum darf nicht mehr verändert werden.
Also so:
Zelle B1= Text Zelle B4=Datum.
Hoffe ihr könnt mir helfen.
gruß Joergi78
 
  • #2
Hallo joergi,

sowas könnte man mit einem verstecktem Blatt und einem Makro lösen.

Bei einem Change-Ereignis einer bestimmten Zelle A auf Blatt X wird per Makro geschaut, ob im versteckten Blatt Y Zelle A schon den Inhalt , z.B. 1 hat. Wenn nein, wird auf Blatt X die zur Zelle A korrerpondierende Zelle B mit Datum gefüllt und im versteckten Blatt Y in Zelle A eine 1 gesetzt.

Die Zellen B wedren auf Änderung überwacht und bei Änderung ein Undo (im Change-Ereignis Cancel=True) ausgelöst.

Gruß Matjes :)
 
  • #3
Hallo Matjes,
Danke für deinen Tipp, aber ich weiß nicht, wie ich diesen umsetzen soll. Hast Du ne Lösung für mich, dich ich dann anpasse???
Wäre SUPI
Gruß joergi
 
  • #4
Hallo joergi78,

dann hier ein Beispiel:

Die Mappe hat 2 Blätter:
a) Eines namens T1, welches überwacht werden soll
b) ein 2. leere Blatt beliebigen Namens

T1 ist in der Konstanten cBLTNAME definiert und kann entsprechend angepasst werden.

Beim Öffnen der Mappe wird dieser Blatt sichtbar gemacht und beim Schliessen versteckt, so dass wenn jemand die Mappe öffnet, ohne den Makro zu aktivieren, das Blatt versteckt bleibt und damit keine Änderung möglich ist (soweit derjenige nicht weis, wie man dieses Blatt trotzdem sichtbar machen kann). Damit das Blatt versteckt werden kann, muß mindestens ein zweites in der Mappe vorhanden sein.

Änderungen in der Datums-Spalte(4) werden überwacht. Bei Änderung wird einfach ein undo gemacht.

Änderungen in der Text-Spalte(1) werden überwacht. Bei Änderung und noch nicht gesetztem Datum wird das heutige Datum in der datums-Spalte(4) eingesetzt.

Folgenden Code in die Code-Seite der Arbeitsmappe (DieseArbeitsmappe) einfügen.

Code:
Option Explicit

Private Const cBLTNAME = T1->Name des überwachten Blattes

Private Const cZ_ERSTEWERTEZEILE = 2->Werte ab Zeile 2
Private Const cSP_DATUM = 4    ->Spalte D
Private Const cSP_TEXT = 1    ->Spalte A

'**************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
->*** Blatt ganz verstecken, damit ohne Makro nichts verändert werden kann
 ThisWorkbook.Worksheets(cBLTNAME).Visible = xlSheetVeryHidden
 ThisWorkbook.Save->speichern, damit keine Nachfrage
End Sub

'**************************************************
Private Sub Workbook_Open()
->*** Blatt sichtbar machen
 ThisWorkbook.Worksheets(cBLTNAME).Visible = xlSheetVisible
 ThisWorkbook.Worksheets(cBLTNAME).Activate
 ThisWorkbook.Saved = True
End Sub

'**************************************************
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 
 Dim Zelle As Range
 Dim bGefunden As Boolean
 
->überwachtes Blatt ?
 If Sh.Name = cBLTNAME Then
  
 ->Änderung eines Datums ? ab Zeile 2, Spalte Datum
  bGefunden = False
  For Each Zelle In Target
   If Zelle.Column = cSP_DATUM Then
    If Zelle.Row >= cZ_ERSTEWERTEZEILE Then
    ->ja
     bGefunden = True
     Exit For
    End If
   End If
  Next
  
 ->Änderung eines Datums ? ja:-> undo und Ende
  If bGefunden Then
  ->Ereignisse abschalten, da sonst das undo ein erneuten Event erzeugt
   Application.EnableEvents = False
  ->undo
   Application.Undo
  ->Ereignisse anschalten
   Application.EnableEvents = True
   GoTo AUFRAEUMEN
  End If
  
 ->Änderungen in Text-Zellen ? ab Zeile 2, Spalte Text
  For Each Zelle In Target
   If Zelle.Column = cSP_TEXT Then
    If Zelle.Row >= cZ_ERSTEWERTEZEILE Then
    ->ja
    ->Datum noch nicht gesetzt ?
     If Sh.Cells(Zelle.Row, cSP_DATUM).Value =  Then
    ->ja -> Datum heute() setzen
     
     ->Ereignisse abschalten, da sonst das Event erzeugt wird
      Application.EnableEvents = False
     ->Zelle für Datum formatieren und Datum einsetzen
      With Sh.Cells(Zelle.Row, cSP_DATUM)
       .NumberFormat = dd.mm.yyyy
       .Value = Now()
      End With
     ->Ereignisse anschalten
      Application.EnableEvents = True
      
     End If
    End If
   End If
  Next
 
 End If
AUFRAEUMEN:
 Set Zelle = Nothing
End Sub

Reicht das so ??
Gruß Matjes ;)
 
  • #5
Ja DANKE,
werde das ganze mal testen bei Gelegenheit. Melde mich dann
gruß J.
 
Thema:

Datum automatisch vergeben

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben