Clever-Excel-Forum

Normale Version: Dropdown-Liste updaten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allerseits, 

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.

Liebe Grüße,
Majusch Angel
Moin,

ein wenig verwirrend (zumindest für mich). Huh 

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
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.
Im sorry, habe schnell ein Beispeil gebastelt und angehängt.
Danke schon mal  :28:

(27.09.2019, 13: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:
Moin,

ü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'
BCD
4HSEssen
5Person ABrotBrot
6Person BFleischFleisch
7Person CFischGemüse
8Person DNudelnNudeln
9Person EFischGemüse

NameBezug
Essen=Tabelle2!$C$4:$C$7

ZelleFormel
D5=SVERWEIS(C5;Tabelle2!$C$4:$D$7;2;0)

ZelleGültigkeitstypOperatorWert1Wert2
C5Liste=Essen
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg

Arbeitsblatt mit dem Namen 'Tabelle2'
CD
3ListeHS
4BrotBrot
5NudelnNudeln
6FleischFleisch
7FischGemüse
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
Hallo

per VBA möglich

- 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
       
       RNG.Replace What:=strVorher, Replacement:=Target, LookAt:=xlWhole, _
           SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
           ReplaceFormat:=False

   End If
   
   Err.Clear
Fehler:
   Application.EnableEvents = True
   If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
       & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear

End Sub



- Bei Änderung im "Essen Bereich" wird das Makro aktiv,
- ermittelt den Alten Stand,
- und tauscht die Essen auf Blatt1 aus.


LG UweD
(27.09.2019, 14:33)UweD schrieb: [ -> ]Hallo

per VBA möglich

- 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
       
       RNG.Replace What:=strVorher, Replacement:=Target, LookAt:=xlWhole, _
           SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
           ReplaceFormat:=False

   End If
   
   Err.Clear
Fehler:
   Application.EnableEvents = True
   If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
       & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear

End Sub



- Bei Änderung im "Essen Bereich" wird das Makro aktiv,
- ermittelt den Alten Stand,
- und tauscht die Essen auf Blatt1 aus.


LG UweD

Hey,

Sorry für die späte Rückmeldung, das war die Lösung für mein Problem, vielen Dank  :23: