Microsoft Excel

Herbers Excel/VBA-Archiv

Dropdown-Auswahlliste in VBA

Betrifft: Dropdown-Auswahlliste in VBA von: Sebastian
Geschrieben am: 10.04.2008 16:57:26

Hallo,

leider werd ich aus den ganzen Posts nicht schlau (wahrscheinlich such ich auch nach den falschen Begriffen).

Ich möchte eine Dropdown-Auswahlliste (beim Erstellen eines neuen Sheets) mit dem Werten von Sheet A (Werte in A1:A20) erstellen. Diese Liste soll bei dem neuerstellen Worksheet an der Position E3 stehen.

Vielen Dank im Voraus!

Gruss,
Sebastian

  

Betrifft: AW: Dropdown-Auswahlliste in VBA von: Beverly
Geschrieben am: 10.04.2008 18:19:02

Hi Sebastian,

ich hoffe, ich habe richtig verstanden, dass du ein DropDown-Listenfeld aus Daten Gültigkeit erstellen willst? Zeichne den Code mit dem Makrorekorder auf.
Du musst allerdings beachten, dass bei einem DropDown-Listenfeld aus Daten Gültigkeit kein direkter Bezug auf andere Arbeitsblätter genommen werden darf. Verwende also einen definierten Bereichsnamen als Quelle.



GrußformelBeverly's Excel - Inn


  

Betrifft: Daten - Gültigkeit in neues Blatt einfügen von: NoNet
Geschrieben am: 10.04.2008 18:22:12

Hallo Sebastian,

das von Dir gesuchte Feature nennt sich "Gültigkeitsprüfung" und befindet sich bis Excel 2003 im Menü "Daten - Gültigkeit - Zulassen: Liste - Quelle: Bereich".

Damit Du eine Dropdown-Auswahlliste in einem Tabellenblatt erhältst, die mit Werten aus einem anderen Tabellenblatt gefüllt ist, musst Du dem Bereich im Quellblatt (bei Dir also Blatt "A") einen Namen vergeben :
- Bereich im Quellblatt markieren
- Strg+F3 drücken
- Einen Namen vergeben (z.B. "NamenAusA")
- mit "Hinzufügen" und "OK" bestätigen

Ohne diesen Namen funktioniert das grundsätzlich nicht in einem externen Tabellenblatt !

Nun folgt die eigentliche Beantwortung Deiner Frage :
Per VBA kannst Du auf neu erstellte Tabellenblätter reagieren, indem du im Klassenmodul "DieseArbeitsmappe" das Ereignismakro "Workbook_NewSheet" erstellst.

Füge also folgendes Makro in das Klassenmodul "DieseArbeitsmappe" ein :

'Dieser Code muss in das Klasenmodul "DieseArbeitsmappe" im VBA-Editor !
'10.04.2008, NoNet - www.excelei.de
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    If Sh.Type = xlWorksheet Then 'Gültigkeit nur für neue Tabellenblätter erstellen !
        With Sh
            With [E3].Validation 'Gültigkeit in neuem Blatt in Zelle E3 erstellen
                .Delete 'nur prophylaktisch : Bestehende Gültigkeit löschen
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=NamenAusA" 'NamenAusA muss in Blatt "A" definiert sein !
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = "Bitte Wert auswählen" 'Eingabemeldung kann auch gelöscht werden
                .ErrorTitle = "Ungültige Eingabe !"
                .InputMessage = "Bitte Wert aus A!A1:A10 auswählen" 'Erscheint bei Falscheingabe
                .ErrorMessage = "Bitte einen gültigen Wert aus der Liste auswählen !"
                .ShowInput = True
                .ShowError = True
            End With
        End With
    End If
End Sub

Code eingefügt mit Syntaxhighlighter 4.15

Es wird im neuen Tabellenblatt in Zelle E3 eine Gültigkeit definiert mit Bezug auf den Bereichsnamen "NamenAusA", der dazu wie oben beschrieben definiert sein muss.

ACHTUNG : Wenn Du (z.B. per gruppierten Tabellenblättern) mehrere Tabellenblätter GELICHZEITIG einfügst, dann reagiert dieses Makro nur auf das ERSTE dieser eneuen tabellenblätter, daher wird diese Gültigkeit auch nur im ERSTEN dieser Blätter eingefügt !!

Gruß, NoNet


  

Betrifft: AW: Daten - Gültigkeit in neues Blatt einfügen von: Sebastian
Geschrieben am: 11.04.2008 09:54:51

Perfekt!

Ich danke euch :)

Schönen Tag noch!!