In diesem Beispiel wurde in der Tabelle Daten etwas geändert: Vorher: bla bla Jetzt: bla blam
Hat jemand eine Idee, wie man die Tabelle Test automatisch bzgl. der Änderung in Daten updaten kann, ohne/mit VBA? Scheinbar gibt es nicht so einfache Lösung
ich habe den Code auf MS gefunden, bekomme error 421
Code:
Sub Worksheet_Activate()
Test.Range("B3").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="=Daten!$B$2:$B$6" End With
ist ganz simpel: in Daten dynamische Tabelle anlegen. Die Tabelle einen Bereich zuweisen. Den Namen des Bereiches ins DD hinter dem = eintragen. da braucht es kein VBA. Dein Beispiel eingebaut im Anhang
Bin mir nicht sicher ob die Idee richtig verstanden wurde?
versuche bitte in der Tabelle Daten da da da zu da da do ändern, wechsele dann zur Tabelle Main (ohne etwas zu machen) um zu sehen, ob deine Änderung stattgefunden hat.
ja bei mir ändert es sich im DD Menü. Ich vermute aber, dass sich die Werte in den Zellen, wo vorher da da da drin stand, dann wohl da da do drin stehen soll? Wenn das der Fall ist, kann man mit einer Schleife With Tabelle1. im Modul der Tabelle2 und Methode .Find die Änderung aus ActiveCell auswerten, in Find übergeben und alle ein Frage kommenden Zellen der Tabelle1 mit der Schleife abklappern und den neuen Wert unter der Vergleich des alten (ehemaligen) Wertes dann ausgetauschen.
danke Je ich denke auch dass die Schleife hergeht und die Spalte in Test - um bei diesem Beispiel zu bleiben- je nach Veränderung aus der Tabelle Daten updatet.
Hier muss ich höllisch bei großen Datensätzen aufpassen; die Änderungen sind manchmal so minimal, dass kaum jemand merkt. daher ein Sub Worksheet_Activate() wäre keine gute Idee für dieses Vorhaben.
21.01.2022, 20:48 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2022, 20:48 von Tom2020.)
ich habe den Code in der Excel-Datei angepasst und man sieht was ich meine.
ok, schön wäre wenn man hier keine 1:1 Beziehung hat sondern durch eine Schleife automatisch die Werten in der Tabelle Test updatet.
Das Problem ist hier, wenn man eine Tabelle1 mit 100 Zeilen durch Drop-Down befüllt hat und später eine Änderung in der Liste (Tabelle2) kommt, braucht man eine Woche und ist es nicht sicher ob man alles manuell richtig ausgewählt hat, abgesehen davon, dass die Liste werte hat wie
@TE du hast recht, das ist merkwürdig. da hilft nur die Zelle löschen.
Aber warum hälst du dich nicht an die Vorschläge mit dem Namensmanager und der Intelligenten Tabelle?
Die Listendaten zu eine Tabelle formatieren. Deren Name erscheint im Namensmanager. Einen neuen Namen erstellen mit dem Bezug "=tabellenname" dieser neue Name kann als Referenz in der Gültigkeitsprüfung benutzt werden. fertig.
22.01.2022, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2022, 09:56 von Tom2020.)
Ich würde gerne jedem hier Recht einräumen, wenn er mit Excel in nicht Enterprise-Umgebung (große Datenmenge, unterschiedliche ERP-Modulen, Sprache, Länder, etc.) zu tun hat.
Fak ist jedoch dass man den Aufwand so gering halten sollte, wie ein/ausatmen. Natürlich sind andere Lösungen denkbar. Diese minimal-Lösung (1:1 Bezeigung) ist nach einer langen Überlegung und Aufwand-Einschätzung (mit Dep) äußerst beherrschbar/ungefährlich, überlege für eine VBA-basierte Schleife-Lösung.
Wie oben, kommt selbst Sub Worksheet_Activate() bei einem Datensatz von 2000 nicht in Frage wegen der System Blockade (es gibt einen normal VBA-code wenn man Worksheet_Activate event nicht benutzen will).
Code:
Sub UpdateDropDown_manually()
On Error Resume Next ' //Your Line here
Sheets("Test").Activate ' Amend to suit Sheets("Test").Range("D2").Select 'DropDown
With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Daten!$A$1:$A$4" ' Amend to suit End With Sheets("Test").Range("D3").Value = Sheets("Daten").Range("$A$1").Value
' // If Err.Number > 0 Then Debug.Print Err.Number & ":" & Err.Description End If End Sub