Wie erstellt man ein externes Protokoll mit Excel VBA?

9

Der Code wurde aktualisiert, um auf die folgenden Änderungen zu verweisen.

Dieses Protokollsystem erstellt ein externes Dokument für Excel namens Log.txt. Es erstellt eine Zeile in der Datei log.txt, die wie folgt aussieht:

  

11:27:20 AM Matthew Ridge hat die Zelle $ N $ 55 von ss in

geändert

Dies sagt Ihnen nicht, ob jemand eine neue Codezeile in das Blatt eingegeben hat, aber wenn der Code eine Antwort verlangt, wird er Ihnen sagen, in welcher Zelle diese Antwort ist. Diese Codes sollten sowohl für Mac- als auch für PC-Systeme funktionieren kombiniert. Wenn die Leute es nicht finden, sag es bitte.

Dieser Code wurde mit Hilfe von Leuten hier und anderen Formen erstellt, so dass ich das Dokument nicht als Alleineigentümer übernehmen kann, aber ich kann das Konzept übernehmen. Also danke an die, die geholfen haben, ohne dass es meiner Meinung nach kein brauchbares Protokollierungssystem für Excel geben würde;)

Übrigens, bevor jemand ausflippt und fragt, wohin dieser Code geht, ist er für den allgemeinen / neuen Endbenutzer nicht offensichtlich. Sie müssen zum Entwickler-Tab gehen , klicken Sie auf in Visual Basic und wenn das neue Fenster geöffnet wird, suchen Sie nach Microsoft Excel-Objekt; Unter diesem Ordner sollte Ihre Arbeitsmappe sein. Sie können es entweder unter ThisWorkbook oder in einem der Blätter platzieren, indem Sie doppelt auf das Blatt klicken, in dem der Code enthalten sein soll.

Sobald das Blatt im rechten Feld geöffnet ist, wird Option Explizit angezeigt. Wenn dies nicht der Fall ist, aktivieren Sie es am besten, indem Sie sicherstellen, dass die Option Variablendeklaration erforderlich aktiviert ist. Das wird wieder in dem Visual Basic-Fenster gefunden und folgt diesem Pfad:

Tools - & gt; Optionen - & gt; Editor

Wenn es aktiviert ist, haben Sie keine Sorgen, wenn nicht, dann überprüfen Sie es. Option Explicit ist eine gute Sache für Sie Code, es zwingt Sie, Variablen zu deklarieren, was eine gute Praxis ist, mit zu beginnen.

Nach der Überprüfung können Sie den folgenden Code kopieren, um ihn entweder in Ihre Arbeitsmappe einzufügen, oder ein bestimmtes Blatt, das Ihren Anforderungen entspricht.

Version 2.01

%Vor%

Im Laufe der Zeit werde ich versuchen, diesen Code zu aktualisieren, um weitere Funktionen hinzuzufügen, wie ich es für richtig halte.

Nochmals vielen Dank für all das, was uns geholfen hat, dies zu ermöglichen.

    
Matt Ridge 01.05.2012, 19:59
quelle

3 Antworten

3

Das Problem ist, dass wenn Sie die verbundenen Zellen eingeben, der in PreviousValue (in Worksheet_SelectionChange ) eingegebene Wert ein Array aller verbundenen Zellen ist, die Sie nicht mit dem neuen Wert vergleichen können. Wenn Worksheet_Change beim Bearbeiten ausgelöst wird, ist das Ziel nur die Zelle oben links im zusammengeführten Bereich. Lassen Sie uns also diese Zelle für zusammengeführte Bereiche verfolgen. Ersetzen Sie Ihr Worksheet_SelectionChange durch Folgendes:

%Vor%

Haftungsausschluss: Dies wurde in Excel für Mac 2011 getestet, da ich momentan keinen Zugriff auf Excel für Windows habe, aber ich bin mir ziemlich sicher, dass es auch für Excel für Windows funktioniert.

    
Jason Clark 01.05.2012, 20:31
quelle
1

Matt Ridge - Ich weiß, dass Sie nach einer Lösung für mehrere Änderungen auf einmal gefragt haben, und ich bin nur 3 Jahre zu spät, aber hier ist es :). Ich habe einige geringfügige Änderungen am ursprünglichen Code vorgenommen, aber dies wird mit verbundenen Zellen umgehen und mehrere Änderungen an Zellen protokollieren.

%Vor%     
Matthew Schofield 17.08.2015 07:41
quelle
1

ein Jahr später änderte ich den Code von Matthew - jetzt verfolgt er Änderungen durch Kopieren / Einfügen oder das Aufspüren der Maus auch, danke Matthew für die gute Idee!:

%Vor%     
OtisLoomgard 21.06.2016 13:38
quelle

Tags und Links