2016-09-29 5 views
1

Ich bin ziemlich neu in VBA und versuche zu sehen, ob ich einen Code für einen bestimmten Prozess erstellen kann. Ich habe eine Tabelle mit ein paar eindeutigen Kennungen und Firmennamen in der ersten Reihe (Firma A, Firma B, usw.). In den folgenden Spalten befinden sich einige weitere Spalten wie Standort, Schlüsselkontakt usw., die jeder Firma entsprechen. Schließlich gibt es eine Spalte für "Kommentare". Diese Kommentare werden regelmäßig aktualisiert.So kopieren Sie eindeutige, ändernden Wert und fügen Sie in einem anderen Blatt VBA

Was ich versuche, ist ein Makro erstellen, mit dem ich den Kommentar für die einzigartige Firma finden kann, kopieren (oder schneiden) und es in ein "historische Kommentare" Blatt in der gleichen Arbeitsmappe einfügen, so dass ich eine Aufzeichnung der letzten Kommentare führen kann. Gibt es eine Möglichkeit, ein Makro dafür zu erstellen? Ich habe etwas erstellt, das, wenn ich den genauen Zellnamen einfüge, den Kommentar kopieren und einfügen würde, aber ich wollte sehen, ob ich eine Zelle bestimmen könnte, in die ich den Firmennamen eingeben könnte, und das Makro würde sich ansehen was ist in dieser Zelle und kopieren Sie dann den entsprechenden Kommentar, fügen Sie es in das Rückblatt ein, und löschen Sie dann die Zelle, damit ich einen neuen Kommentar eingeben kann. Ich habe keine Ahnung, ob das auch nur entfernt möglich ist, aber jede Hilfe wäre sehr willkommen!

Sub Range_copy() 
Dim cellwant As Variant 
Dim cellhistory As Variant 
Dim LRow As Variant 
Dim Account As Variant 


Worksheets("AAG").Select 

Worksheets("AAG").Range("I3").Select 
cellwant = Selection.Value 
FindString = Sheets("AAG").Range("B5:B65").Value 

cellwant = Selection.Value 

Worksheets("AAG").Range(cellwant).copy 
Worksheets("Sheet2").Activate 

Worksheets("Sheet2").Range("A1").Select 
+2

Ich empfehle, durch zu lesen, wie man '.Select' vermeidet (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). Dies zeigt Ihnen, wie Sie Variablen einrichten, um Ihre Daten zu speichern, anstatt darauf angewiesen zu sein, sie auszuwählen. – BruceWayne

+0

Da Sie neu bei VBA sind, gebe ich Ihnen einen weiteren Tipp, der Sie vor stundenlangem Debugging bewahren kann: Am Anfang Ihrer Skripte schreiben Sie immer 'Option Explicit'. Dadurch wird sichergestellt, dass Sie Werte für Variablen mit Tippfehlern niemals festlegen, da zuerst überprüft wird, ob alle Ihre Variablen deklariert sind. Für weitere Informationen https://msdn.microsoft.com/en-us/library/y9341s4f.aspx – RCaetano

Antwort

0

Die Frage ist ein wenig vage darüber, was ein "entsprechender Kommentar" für einen Firmennamen wäre. Ich denke jedoch, was Sie suchen, könnte mit dem Worksheet_Change-Ereignis geschehen, das automatisch ausgelöst wird, wenn eine Änderung an einem bestimmten Arbeitsblatt vorgenommen wird.

Setzen Sie diesen Code in das Sheet-Objekt (kein Modul) des Arbeitsblatts, das die Kommentare enthält. Ersetzen Sie die erforderlichen Konstanten nach Bedarf. Es wird automatisch jedes Mal ausgeführt, wenn eine Änderung vorgenommen wird; es prüft, ob die Änderung in unserer spezifizierten Spalte vorgenommen wird (dies kann eine spezifizierte Zelle sein, wenn Sie dies wünschen); Wenn die Änderung vorhanden ist, findet sie die erste leere Zelle in unserem Datensatz und dupliziert den Wert in der Zelle dort; dann löscht es die Zielzelle für einen neuen Eintrag und wählt es erneut aus.

+0

vielen Dank! Ich denke, das bringt mich in die richtige Richtung. Was ich mit dem entsprechenden Kommentar meinte, ist, dass das Datensatzblatt die gleiche Liste von Unternehmen hat, die im ersten Blatt vorhanden ist, also möchte ich, dass es den Kommentar neben dem entsprechenden Unternehmen im Rückblatt kopiert. Das einzige an dem Code, den Sie gesendet haben, war, dass ich den Kommentar vom ersten Blatt in das Protokoll kopieren kann, BEVOR ich ihn ändere, wenn das sinnvoll ist. Ich möchte den neuen Kommentar nicht kopieren, da dieser noch nicht im "Record Sheet" enthalten sein müsste, wenn das sinnvoll ist. Danke nochmal! –

+0

Leider gibt es keine sehr elegante Möglichkeit, den Wert des Kommentars abzurufen, bevor die Änderung vorgenommen wurde - es gibt kein Ereignis vor der Änderung, das Code ausführen kann. Es ist die tatsächliche Änderung, die dieses Makro auslöst. Es gibt keinen eleganten Weg ... aber es gibt einen Weg. Ich habe meine Antwort aktualisiert, um diese Option wiederzugeben. – Werrf

+0

Danke !! Das ist toll. Letzte Frage: Gibt es eine Möglichkeit, den Kommentar neben der entsprechenden Firma in diesem Rückblatt anstelle der nächsten leeren Zeile einzufügen? Jedes Blatt hat die gleiche Anzahl an Zeilen, ich möchte es nur hoffentlich an der richtigen Stelle im Gegensatz zur nächsten offenen Zeile einfügen. Ich bin mir nicht sicher, ob das überhaupt in VBA möglich ist, aber ich dachte, ich würde fragen. Vielen Dank ! –

Verwandte Themen