22.11.2018, 08:14 (Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2018, 10:24 von WillWissen.
Bearbeitungsgrund: Formatierung
)
Hallo Zusammen
Ich bräuchte eure Hilfe!
Gerne würde ich Werte von einem Tabellenblatt in ein anderes Kopieren (etwa in der Art wie es die Index-Formel macht). Dies jedoch mit einem VBA-Makro.
Das Makro soll folgendes machen: - Zellenwert (Blatt 3) mit Wert aus Blatt 1 vergleichen (mit Hilfe der Kennung, die Spalte sollte anhand des Spaltentitels ermittelt werden) - bereits vorhandene Kommentare löschen - Ist gleich -> nichts unternehmen - Ist nicht gleich -> alter Wert als Kommentar in die Zelle schreiben -> neuen Wert in Zelle in Blatt 3 schreiben -> Textfarbe auf rot ändern
Zum einfacheren Verständnis habe ich euch ein Beispiel-Excel angehängt. (Einmal als xlsm und einmal als xlsx für die, die keine fremden Makrodateien öffnen)
Wäre mega wenn wir das hier hinkriegen, freu mich schon aufs Endergebnis. Vielen Dank jetzt schon!
Zitat:Zellenwert (Blatt 3) mit Wert aus Blatt 1 vergleichen (mit Hilfe der Kennung, die Spalte sollte anhand des Spaltentitels ermittelt werden)
wofür soll denn das gut sein? Wenn Du die Spalten willkürlich anlegen willst, kannst Du ja auch nicht mehr so einfach kopieren denn die weiteren Spalten sind ja dann auch verschoben. Einmal abgesehen davon das die Ausführungszeit wahrscheinlich exterm ansteigt.
Grüße aus Nürnberg Armin Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Das Einfärben der Werte ist mir nicht ganz klar, da es nicht richtig zu fassen ist! Hier ist das Problem, dass nicht genau zu erkennen ist, wann das geschehen soll! Soll hier eingefärbt werden, wenn wirklich der Wert nur gefunden wird, oder soll das Datum im Kommentar auch abgeglichen werden! Da sobald das Makro ein zweites mal über den Bereich läuft natürlich der Wert gefunden wird! In der Beispieldatei wird das Makro mit einem Change- Ereignis aufgerufen, was unweigerlich dann zu den roten Werten führt! Außer du legts das Makro auf einen Button und kontrollierts somit das ganze...
Code:
Option Explicit
Sub neueWerte() Dim FindSpalte As String Dim SuchTab As Integer Dim SuchBegriff As Variant Dim Last As Integer, i As Integer, e As Integer Dim Finden As Variant
Last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set Finden = Sheets(SuchTab).Range("F:F").Find(Range("A" & e).Value)
If Finden <> "" Then SuchBegriff = Sheets(SuchTab).Range(FindSpalte & Finden.Row).Value
If Finden <> "" And FindSpalte <> "E" Then ActiveSheet.Cells(e, i) = SuchBegriff: ActiveSheet.Cells(e, i).Font.Color = vbBlack
If Finden <> "" And FindSpalte = "E" Then
If SuchBegriff = ActiveSheet.Cells(e, i).Value Then If Not ActiveSheet.Cells(e, i).Comment Is Nothing Then ActiveSheet.Cells(e, i).Comment.Text Text:=Format(Now, "DD.MM.YYYY") & " " & SuchBegriff ActiveSheet.Cells(e, i).Comment.Visible = False Else ActiveSheet.Cells(e, i).Font.Color = vbRed ActiveSheet.Cells(e, i).AddComment Text:=Format(Now, "DD.MM.YYYY") & " " & SuchBegriff ActiveSheet.Cells(e, i).Comment.Visible = False End If End If
If SuchBegriff <> ActiveSheet.Cells(e, i).Value Then ActiveSheet.Cells(e, i).Value = SuchBegriff ActiveSheet.Cells(e, i).Font.Color = vbBlack If Not ActiveSheet.Cells(e, i).Comment Is Nothing Then ActiveSheet.Cells(e, i).Comment.Delete End If
End If
Next
Next
End Sub
Folgende(r) 1 Nutzer sagt Danke an Frogger1986 für diesen Beitrag:1 Nutzer sagt Danke an Frogger1986 für diesen Beitrag 28 • Andreas.ch
Hi, das sieht schon mal mega cool aus!! Vielen Dank!
Ja das habe ich vergessen zu erwähnen, das ganze möchte ich dann auf einen Button legen, somit gibt es klar eine Anweisung wann es ausgeführt werden soll. Der Kommentar fügt es perfekt ein jedoch nicht im Feld welches sich verändert hat sondern weiter vorne. Somit sollte das ja mit dem roten Anfärben einfacher werden. Im Kommentar wäre super wenn es wie eine Historie geben würde, also immer die neuste Aktualisierung zuoberst steht.
Bezüglich der Spalten, ich habe einfach etwas bedenken, dass beim Export die Spalten nicht gleich bleiben, da es hier eine gewisse Flexiblität in der Software gibt, deswegen dachte ich, müsste man die Spalten anhand des Namen's im Export (der bleibt gleich) finden. Ist das so rechenintensiv?