Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dropdown via VBA zuweisen

Dropdown via VBA zuweisen
31.08.2017 14:05:25
key
Hallo an alle,
ich bräcuhte mal wieder eure Hilfe bei folgender Datei:
https://www.herber.de/bbs/user/115915.xlsm
Aktuell ists so dass es die Blattnamen ließt und dann in Zelle D4 ff. als Dropdown zur Auswahl stellt.
Nun will ich aber folgendes realisieren.
Wenn im angelegten Blatt in Zelle A1 Druck steht, soll dieser Blattnamen im Dropdwon in Zelle D4 ff. auszuwählen sein.
Wenn im angelegten Blatt in Zelle A1 Luft steht, soll dieser Blattnamen im Dropdwon in Zelle R5 ff. auszuwählen sein.
Das muss wohl irgednwie mit Selec Case möglich sein. Wäre toll wenn ihr mir weiterhelfen könnt.
Gruß und Danke
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown via VBA zuweisen
31.08.2017 14:20:39
yummi
Hallo key,
in deienr dropdown aktualisieren folgende if Bedingung dazu:

Case Else
If Application.WorksheetFunction.CountIf(RNG, WS.Name) = 0 Then
If WS.Cells(1, 1).Value = "Druck" Then
strFilter = strFilter & WS.Name & ","
End If
End If
Gruß
yummi
Anzeige
AW: Dropdown via VBA zuweisen
31.08.2017 14:39:33
key
Super, das klappt, Danke. Und den zweiten Range R5:R14 dann anlegen?
AW: Dropdown via VBA zuweisen
31.08.2017 15:11:57
yummi
Hallo key,
du musst von R5 bis R15 noch eine Datenüberprüfung anlegen.
dann den Code:

Private Sub DropDown_aktualisieren()
Dim RNG1 As Range, WS, Z, strFilter1 As String
Dim RNG2 As Range, strFilter2 As String
On Error GoTo Fehler
Set RNG1 = Range("D6:D100")
Set RNG2 = Range("R6:R14")
Me.Unprotect
Application.EnableEvents = False
strFilter1 = ""
strFilter2 = ""
For Each WS In ActiveWorkbook.Sheets
Select Case WS.Name
Case "Summe Luftleistung"
'Diese Blätter nicht ins DropDown
Case "Summe Druck"
Case Else
If Application.WorksheetFunction.CountIf(RNG1, WS.Name) = 0 Then
If WS.Cells(1, 1).Value = "Druck" Then
strFilter1 = strFilter1 & WS.Name & ","
End If
End If
If Application.WorksheetFunction.CountIf(RNG2, WS.Name) = 0 Then
If WS.Cells(1, 1).Value = "Luft" Then
strFilter2 = strFilter2 & WS.Name & ","
End If
End If
End Select
Next
If strFilter1  "" Then
With RNG1.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strFilter1
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Else 'Es sind bereits alle Produkte ausgewählt
With RNG1.Validation
.Delete
End With
MsgBox "Es sind bereits alle Produkte ausgewählt"
End If
If strFilter2  "" Then
With RNG2.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strFilter2
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Else 'Es sind bereits alle Produkte ausgewählt
With RNG2.Validation
.Delete
End With
MsgBox "Es sind bereits alle Produkte ausgewählt"
End If
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
Me.Protect
Application.EnableEvents = True
End Sub
Gruß
yummi
Anzeige
AW: Dropdown via VBA zuweisen
06.09.2017 13:05:59
key
Saustark! Vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dropdown in Excel via VBA zuweisen


Schritt-für-Schritt-Anleitung

Um ein Dropdown in Excel via VBA zu erstellen, befolge die folgenden Schritte:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du im Menü auf Einfügen > Modul klickst.

  3. Kopiere den folgenden VBA-Code in das neue Modul:

    Private Sub DropDown_aktualisieren()
       Dim RNG1 As Range, WS, strFilter1 As String
       Dim RNG2 As Range, strFilter2 As String
       On Error GoTo Fehler
    
       Set RNG1 = Range("D6:D100")
       Set RNG2 = Range("R6:R14")
       Me.Unprotect
       Application.EnableEvents = False
       strFilter1 = ""
       strFilter2 = ""
    
       For Each WS In ActiveWorkbook.Sheets
           Select Case WS.Name
               Case "Summe Luftleistung"
                   'Diese Blätter nicht ins DropDown
               Case "Summe Druck"
               Case Else
                   If Application.WorksheetFunction.CountIf(RNG1, WS.Name) = 0 Then
                       If WS.Cells(1, 1).Value = "Druck" Then
                           strFilter1 = strFilter1 & WS.Name & ","
                       End If
                   End If
    
                   If Application.WorksheetFunction.CountIf(RNG2, WS.Name) = 0 Then
                       If WS.Cells(1, 1).Value = "Luft" Then
                           strFilter2 = strFilter2 & WS.Name & ","
                       End If
                   End If
           End Select
       Next
    
       ' Aktualisiere die Dropdown-Listen
       If strFilter1 <> "" Then
           With RNG1.Validation
               .Delete
               .Add Type:=xlValidateList, Formula1:=strFilter1
           End With
       End If
    
       If strFilter2 <> "" Then
           With RNG2.Validation
               .Delete
               .Add Type:=xlValidateList, Formula1:=strFilter2
           End With
       End If
    
    Fehler:
       If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Description
       Me.Protect
       Application.EnableEvents = True
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Excel-Blatt zurück.

  5. Führe das Makro aus, um die Dropdown-Listen in den Zellen D6:D100 und R6:R14 zu aktualisieren.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Dieser Fehler tritt auf, wenn das Range-Objekt nicht korrekt angegeben ist. Überprüfe, ob die Zellen D6:D100 und R6:R14 existieren.

  • Dropdown wird nicht aktualisiert
    Stelle sicher, dass das Makro korrekt ausgeführt wurde und dass die Zellen nicht geschützt sind.


Alternative Methoden

Falls du kein VBA nutzen möchtest, kannst du auch die Datenüberprüfung in Excel verwenden:

  1. Markiere die Zelle, in der das Dropdown erscheinen soll.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Liste aus und gib die Werte manuell oder als Bereich ein.

Diese Methode ist allerdings weniger dynamisch als die Verwendung von VBA.


Praktische Beispiele

  • Dropdown für verschiedene Blattnamen: Wenn du mehrere Arbeitsblätter hast und nur bestimmte Blätter in das Dropdown aufnehmen möchtest, kannst du die oben genannten VBA-Codes verwenden, um die Blattnamen basierend auf bestimmten Bedingungen auszuwählen.

  • Erweiterung auf mehrere Dropdowns: Du kannst den VBA-Code anpassen, um weitere Dropdowns für zusätzliche Zellen zu erstellen.


Tipps für Profis

  • Nutzung von Arrays: Anstatt Strings für die Dropdown-Werte zu verwenden, kannst du auch Arrays in VBA nutzen, um die Performance zu verbessern.

  • Ereignisgesteuertes Update: Du kannst das Dropdown automatisch aktualisieren, indem du das Makro an ein Ereignis wie Worksheet_Change bindest.


FAQ: Häufige Fragen

1. Wie kann ich die Dropdown-Liste in Excel aktualisieren?
Um die Dropdown-Liste zu aktualisieren, führe einfach das Makro DropDown_aktualisieren erneut aus.

2. Kann ich die Dropdown-Werte aus einer externen Quelle beziehen?
Ja, du kannst die Werte aus einer externen Datenquelle importieren und diesen Bereich in der Formel1-Zuweisung des Dropdowns verwenden.

3. Wie kann ich die Dropdown-Liste für mehrere Zellen gleichzeitig erstellen?
Du kannst den gleichen VBA-Code anpassen, um mehrere Bereiche zu definieren und die Dropdown-Listen entsprechend zu aktualisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige