Ich beschäftige mich seit längerem mit einem Problem, welches scheinbar keine Lösung hat, oder ich sie zumindest nicht finde. Ich will eine Inventarliste erstellen, und benutze dafür in mehreren Spalten ein Dropdown-Menü, welches ich mit einem Wert aus dem Namens-Manager fülle. Im Namens-Manager habe ich mit diesem Namen eine Spalte von einer weiteren Tabelle definiert, in welcher die Werte für die Dropdown-Liste stehen.
Nun ist das Problem, dass ich die Einträge in der 2. Tabelle bearbeiten möchte, jedoch diese nicht in Tabelle 1 geupdatet werden, sprich ich muss erst den geupdateten Wert in der Dropdown-Liste auswählen, damit der im ausgewählten Feld eingetragene Wert überschrieben wird.
Vielleicht hat ja auch jemand einen Vorschlag wie ich das Problem anderweitig lösen kann.
Lad doch bitte eine Beispieldatei (vom Aufbau her zwingend gleich wie dein Original - Daten können durchaus anonymisiert sein) hoch und trage händisch dein Wunschergebnis ein. https://www.clever-excel-forum.de/Thread...ng-stellen
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
in dem Moment, wo Du aus Deinem Dropdown einen Wert auswählst, wird er als Konstante in die Zelle übernommen - ohne jeden Bezug irgendwohin. Somit kann auch kein "Update" erfolgen, wenn Du in der Quelle etwas änderst. Aber wenn Du mal erzählst, was Du genau vorhast, kann man vielleicht andere Vorgehensweisen anbieten.
27.09.2019, 15:05 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2019, 15:09 von Majusch.)
Im sorry, habe schnell ein Beispeil gebastelt und angehängt. Danke schon mal :28:
(27.09.2019, 14:59){Boris} schrieb: Hi,
in dem Moment, wo Du aus Deinem Dropdown einen Wert auswählst, wird er als Konstante in die Zelle übernommen - ohne jeden Bezug irgendwohin. Somit kann auch kein "Update" erfolgen, wenn Du in der Quelle etwas änderst. Aber wenn Du mal erzählst, was Du genau vorhast, kann man vielleicht andere Vorgehensweisen anbieten.
Wie gesagt, ich will eine Inventarliste basteln. Ich verwende z.B. die Spalten "Typ", "Etage", "Raum-Nr." & "Mitarbeiter". Bei der Spalte "Mitarbeiter" z.B. wäre es mir wichtig, dass wenn uns ein Mitarbeiter verlässt und ich seinen Namen entferne oder ihn zu einem Platzhalter ändere, dieser Name auch in der Inventarliste geupdatet wird, und ich nicht jedes mal den Platzhalterwert in der Dropdownliste auswählen muss.
Sorry wenn ich mich so kompliziert ausdrücke, ich versuche grade selbst erstmal klar-Schiff in meinem Kopf zu bekommen :52:
über einen kleinen Umweg könntest du dein Problem so lösen:
In Tabelle 2 erstellst du eine Hilfsspalte, in der die gültigen Begriffe stehen und in Tabelle 1 eine Hilfsspalte, in der du per SVERWEIS() die gültigen Begriffe holst. Die Spale mit den Zellendropdowns könntest du, wenn es dich stört, mittels bedingter Formatierung "unsichtbar" machen.
Arbeitsblatt mit dem Namen 'Tabelle1'
B
C
D
4
HS
Essen
5
Person A
Brot
Brot
6
Person B
Fleisch
Fleisch
7
Person C
Fisch
Gemüse
8
Person D
Nudeln
Nudeln
9
Person E
Fisch
Gemüse
Name
Bezug
Essen
=Tabelle2!$C$4:$C$7
Zelle
Formel
D5
=SVERWEIS(C5;Tabelle2!$C$4:$D$7;2;0)
Zelle
Gültigkeitstyp
Operator
Wert1
Wert2
C5
Liste
=Essen
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
- Rechtsclick auf den Tabellenblattreiter der Tabelle2 - Code anzeigen - Code dort reinkopieren
Code:
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Fehler Const APPNAME = "Worksheet_Change" Dim RNG As Range, strVorher As String
Set RNG = Sheets("Tabelle1").Columns(3)
If Not Intersect(Range("Essen"), Target) Is Nothing Then With Application .EnableEvents = False .Undo 'Um den alten Wert zu ermitteln strVorher = Target .Undo .EnableEvents = True End With
- Rechtsclick auf den Tabellenblattreiter der Tabelle2 - Code anzeigen - Code dort reinkopieren
Code:
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Fehler Const APPNAME = "Worksheet_Change" Dim RNG As Range, strVorher As String
Set RNG = Sheets("Tabelle1").Columns(3)
If Not Intersect(Range("Essen"), Target) Is Nothing Then With Application .EnableEvents = False .Undo 'Um den alten Wert zu ermitteln strVorher = Target .Undo .EnableEvents = True End With