22.11.2018, 07:14 (Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2018, 09: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
Eine Menge reden, aber nichts sagen können viele...
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?