2016-12-23 4 views
-1

Ich brauche Hilfe mit einem Excel-VBA-Code, der Folgendes tun kann. Ich bin ein Anfänger VBA-Programmierer bestenfalls, ich brauche nur etwas für eine Tabelle, an der ich arbeite arbeiten.Zeitstempel in Excel mit sehr spezifischen Anforderungen

Ich weiß, es gibt unzählige Fragen und Antworten zu Zeitstempel Codes und ich habe eine Menge von ihnen gelesen, aber ich kann nicht eine finden, die für meine Bedürfnisse spezifisch ist. Ich habe Stunden damit verbracht, zu suchen, deshalb frage ich stattdessen. Hier ist, was ich brauche:

  1. Wenn eine Zelle in Spalte A geändert wird, und die entsprechende Zelle in Spalte B leer ist, Datumsstempel die Zelle in Spalte B mit dem aktuellen Datum.

  2. Anschließend, wenn eine Zelle in Spalte A geändert wird und die entsprechende Zelle in Spalte B nicht leer ist (weil es bereits einen Datumsstempel aus einer vorherigen Änderung von Spalte A enthält), der Datumsstempel in der Zelle in Spalte B sollte nicht geändert werden. Dies gilt auch, wenn die Zelle in Spalte A durch denselben Wert ersetzt wird.

  3. Wenn die Zelle in Spalte A entweder einzeln oder als Teil eines mehrzelligen Auswahl- und Lösch-Inhalts gelöscht wird, sollte der Datumsstempel in der Zelle in Spalte B nicht geändert ODER entfernt werden.

  4. Nur wenn der Datumsstempel manuell in der Zelle in Spalte B gelöscht wird, sollte es dann erneut mit dem aktuellen Datum gestempelt werden, wenn der Wert der entsprechenden Zelle in Spalte A erneut geändert wird (im Grunde ein Reset).

  5. Erste Zeile ist Etiketten, also nichts zu den Zellen in der ersten Zeile.

Ich hoffe, ich habe das klar genug gemacht. Wenn nicht, lass es mich wissen. Vielen Dank im Voraus für alle Antworten und es tut mir leid, wenn das irgendwo verfügbar war und ich es einfach nicht finden konnte.

+0

https://msdn.microsoft.com/en-us/library/office/ff839775.aspx – cyboashu

+4

Sie sind wahrscheinlich nie einen Code zu finden, gehen die Ihren Bedürfnissen passt, ermutige ich Sie [mehr darüber zu erfahren, Programmierung] (http://alysysistabs.com/excel-vba/codes-examples-macros-how-tos-most-useful-basics-advanced/) oder jemanden einstellen, der das tut. Freundliche Erinnerung: StackOverflow ist kein "wir Code für Sie" -Dienstanbieter. [Einführung in VBA] (https://blog.udemy.com/excel-macros-tutorial/) – Sgdva

+1

Das ist ein einfaches "Worksheet_Change" -Ereignis (siehe Cyboashu-Link), wo Sie nur "Target.Offset (0,1) .Wert "zu" Jetzt() ', wenn" Ziel.Spalte "1 ist und" Ziel.Row "ist> 1 und" Ist leer (Ziel.Offset (0, 1)) ". – YowE3K

Antwort

1

Versuchen Sie den folgenden Code. Und geben Sie uns bitte ein Feedback!

Da Sie möglicherweise eine Änderung an vielen Zellen gleichzeitig vornehmen (z. B. Drücken von Strg + Enter), habe ich eine Schleife verwendet, um durch jede geänderte Zelle zu navigieren.

Private Sub Worksheet_Change(ByVal Target As Range) 
    For Each cell In Target.Cells 
     If cell.Row > 1 And cell.Column = 1 Then 
      If cell.Offset(0, 1).Value = "" Then 
       cell.Offset(0, 1).Value = Now() 
      End If 
     End If 
    Next 
End Sub 
+0

Vielen Dank, genau das habe ich gesucht! Ihre Hilfe wird gerne in Anspruch genommen. –

+0

die einzige Sache, die das besser machen würde, wenn wenn ich einen "klaren Inhalt" auf einer Zelle in der Spalte A tat, die keinen Wert hatte, dass sie nicht Datum in die entsprechende Zelle in Spalte B stempeln würde Ich habe ein paar eingestreute Reihen, die Werte in Spalte A und entsprechende Datumsstempel in B haben, wenn ich dann einen klaren Inhalt eines Zellbereichs in A mache, belässt es die Datumsstempel wie es sollte, aber es stempelt dann auch die Spalte mit Datum B-Zellen, die leer waren, weil A leer war. Ich kann das umgehen, indem ich zuerst filtere, aber wenn es eine Programmierkorrektur gibt, wäre das besser. –

+0

@ Verbatim68 Ich denke, dass Sie diese Bedingung verwenden müssen: 'Wenn cell.Offset (0, 1) .Value =" "und cell.Value <>" "Then" – AleGR

Verwandte Themen