Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Aktualisierte Zellinhalte kennzeichnen
#1
Hallo Community,

ich erbitte Eure Hilfe bei folgendem Problem (vereinfacht dargestellt):

In einer Tabelle werden die Werte in den Zellen z.B. der Spalte C durch Verknüpfungen mit anderen Tabellen aktualisiert. Um eine Kontrolle darüber zu haben, welche Werte sich durch den Aktualisierungsvorgang verändert haben, möchte ich die entsprechenden Zellen z.B. durch ein rotes X in der rechts daneben liegenden (leeren) Zelle (Spalte D) markieren lassen.

Bevor ein neuer Aktualisierungsvorgang abläuft, müssen die vorherigen Kennzeichnungen gelöscht werden (ist eigentlich selbstverständlich).

Für Lösungsvorschläge bedanke ich mich im Voraus.
to top
#2
Hallo Hardbopper,

einfachste Lösung wäre eventuell eine Kopie der Werte des Blattes bei einer Berechnung und dabei ein Vergleich. Wenn Du in A1 was einträgst, wird gerechnet. Bei der Berechnung wird geprüft, ob der Wert mit dem auf Tabelle2 an gleicher Stelle übereinstimmt - hier B2. Wenn ja, ist gut. Wenn nein, wir der Stern gesetzt und der neue Wert in die "Hilfstabelle" übertragen.

Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
156

ZelleFormel
B1=A1+1
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg

Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Sheets("Tabelle2").Cells(1, 2).Value <> Cells(1, 2).Value Then
  Cells(2, 2).Value = "*"
  Cells(1, 2).Copy
  Sheets("Tabelle2").Cells(1, 2).PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False
Else
  Cells(2, 2).Value = ""
End If
Application.EnableEvents = True
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Zunächst einmal herzlichen Dank, André,

ich habe mich inzwischen für folgende eigene Lösung entschieden:

Neben der Spalte C mit den aktualisierbaren Daten werde ich [/b]zwei weitere Spalten in Anspruch nehmen, die Spalte D, in die ich per Makro die [b]Werte aus Spalte C hineinkopiere und die Spalte E, in der ich per Formel Differenzen zwischen C und D auslesen lasse. Damit die Ergebnisse in Spalte E nicht dauerhaft Bestand haben, lasse ich vor dem Schließen der Tabelle den Kopiervorgang (siehe oben) erneut ablaufen. Was mich derzeit noch stört: Das Makro wird über eine Befehlsschaltfläche angestoßen, ich hätte aber gern, dass es automatisch vor dem Schließen der Tabelle abläuft, weiß aber nicht, wie das zu bewerkstelligen ist, denn nach meinen laienhaften Vorstellungen wird mit dem Auslösen des Schließen-Vorgangs jede andere Aktivität, damit auch der Ablauf eines VBA-Befehls, unterbunden. Es müsste also das Schließen solange aufgehalten werden, bis das Kopieren stattgefunden hat.

Hast Du eine Idee, wie das möglich ist ?

Gruß Hardbopper
to top
#4
Hallo Hardbopper,
Dazu gibt es in Excel die Ereignismakros. Ich hatte ja auch schon das Calculate-Ereignis. Was meinst Du mit"Tabelle schließen"? Wenn Du die Datei schließt, dann z.B. das Workbook_Bevore_Save oder...Close nehmen. Findest Du unter DieseArbeitsmappe.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#5
Hallo André,

1. Die Arbeitsmappe besteht nur aus dieser einen Tabelle, weil es alle Daten aus einer Vielzahl anderer Tabellen über Verknüpfungen abruft und kein Bedarf an weiteren Tabellen an dieser Stelle besteht.

2. Mit "Tabelle schließen" meine ich das X, mit dem üblicherweise eine Tabelle ( und damit auch die Arbeitsmappe) geschlossen wird.

2. Über Workbook_BeforeClose habe ich es schon versucht, es funktioniert aber nicht, d.h. wenn ich die Tabelle wieder öffne, hat kein Kopieren stattgefunden.

Gruß Hardbopper
to top
#6
Hallo André,

ich schicke Dir mal das ganze Makro, vielleicht findest Du den Fehler. Die Zellbezüge stammen natürlich von der echten Tabelle. Der Kopiervorgang läuft einwandfrei, insofern kann darin kein Fehler liegen.

Gruß Hardbopper

Code:
Sub Worksheet_BeforeClose()
'
' Werte_Kopieren Makro
'
    Range("AF6:AF136").Select
    Selection.Copy
    Range("AF6:AF11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF14:AF90").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG14").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=62
    Range("AF91:AF93").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG91:AG93").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF95").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF97:AF98").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG97:AG98").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF106").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AF106:AF116").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG106").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=10
    Range("AF117:AF118").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG117:AG118").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF120:AF121").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG120:AG121").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF126").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG126").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF128").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG128").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AF129:AF130").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG129:AG130").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=10
    Range("AF135:AF136").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AG135:AG136").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Close
End Sub
to top
#7
Hallo,

(19.12.2014, 01:54)Hardbopper schrieb: 2. Über Workbook_BeforeClose habe ich es schon versucht, es funktioniert aber nicht, d.h. wenn ich die Tabelle wieder öffne, hat kein Kopieren stattgefunden.

wenn ich mir dein Makro betrachte, ist es klar das, wenn Du die Tabelle wieder öffnest, das Kopieren 'scheinbar' nicht stattgefunden hast. Du speicherst die Datei nicht. Bei dem Close am Ende deines Codes fehlt meinerachtens noch was.
Gruß Stefan
Win 7 / Office 2007
to top
#8
Hi,

das z.B.

Code:
Private Sub Workbook_BeforeClose(Cancel as Boolean)
    If Me.Saved = False Then Me.Save
End Sub

Gruß
Max
to top
#9
Hallo Ihr beiden,

hab' ich alles schon versucht, das Kopieren gelingt nach wie vor nur "im Handbetrieb", automatisiert findet nichts statt.

Gruß Hardbopper
to top
#10
(19.12.2014, 10:16)Hardbopper schrieb: Hallo Ihr beiden,

hab' ich alles schon versucht, das Kopieren gelingt nach wie vor nur "im Handbetrieb", automatisiert findet nichts statt.

Gruß Hardbopper

Automatisierter Handbetrieb???? 19

Hast Du die Prüfung ob es gespeichert wurde am Anfang oder am Ende Deiner Prozedur eingefügt?

Gruß
Max
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Zelle abhängig von TEXT in Zelle X farbig kennzeichnen djmugge 3 71 21.10.2016, 21:43
Letzter Beitrag: schauan
  bestimmte Zellinhalte Fett delenn 17 2.083 13.07.2015, 12:12
Letzter Beitrag: schauan
  Zellinhalte nach bestimmten Zeichen zusammenfassen Büroklammer 5 1.297 26.09.2014, 05:19
Letzter Beitrag: schauan

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste