Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kombinationsfeld mit Spalteninhalten füllen

Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 10:52:10
Dirk
Hallo Forumsmitglieder,
sicherlich ein Standardproblem, das ich im Archiv dennoch nicht finde:
Ich möchte die Combobox "Combo_OV" mit den verschiedenen Inhalten des Blattes "Daten" aus der Spalte "I" befüllen. Ich weiß nicht wie lang mein Datenblatt ist und wie viele verschiedenen Einträge beinhaltet sind.
Weiterhin kenne ich nur die Version: Combobox auf einem Formular positionieren und das Befüllen beim Initialisieren auslösen. Das möchte ich aber nicht. Ich möchte die Combobox auf einem individuellen Blatt ("Kennzahlen") positionieren und die Combobox füllen, wenn die Datei geöffnet wird. Gibt es dafür auch eine Ereignisprozedur, oder muss ich ein Ereignis Worbook.open nutzen und von dort das Combomakro aufrufen?
Vielen Dank!
Dirk

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 10:59:26
Rudi
Hallo,
>
Workbook_Open ist das Ereignis, das beim Öffnen einer Datei ausgeführt wird.
Evtl. zusätzlich Worksheet_Activate des Sheets "Kennzahlen".
Gruß
Rudi
AW: Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 11:02:10
ChrisL
Hi Dirk
z.B. so...
Private Sub Workbook_Open()
Dim ar() As Variant
With Worksheets("Daten")
ar = Application.Transpose(.Range("I1:I" & .Cells(Rows.Count, 9).End(xlUp).Row))
Worksheets("Kennzahlen").ComboBox1.List = ar()
End With
End Sub

cu
Chris
AW: Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 11:15:06
Dirk
Hallo Chris,
vielen Dank! Funktioniert fast...
So stehen alle Einträge drin - also mehrfach. Ich möchte aber nur die verschiedenen eingetragen haben. Es ist ein Datenblatt, das ich zum Pivotieren nutze. Daher stehen die Einträge in jedem Datensatz wieder drin und damit in der Spalte mehrfach.
Hast du dafür auch noch eine so fixe Lösung?
Gruß
Dirk
Anzeige
AW: Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 11:15:54
Matthias
Hallo
Option Explicit
Private Sub Worksheet_Activate()
Dim LoLetzte&
With Worksheets("Daten")
LoLetzte = .Cells(.Rows.CountLarge, "I").End(xlUp).Row
Combo_OV.ListFillRange = "Daten!I1:I" & LoLetzte
End With
End Sub
Code ins Blatt "Kennzahlen" in der die Combobox eingefügt ist.
Gruß Matthias
AW: Kombinationsfeld mit Spalteninhalten füllen
03.04.2017 11:39:31
Dirk
Hallo Matthias,
ja, funktioniert ebenfalls - fast. Denn die Enträge sind mehrfach vorhanden. Siehe meine Antwort an Chris.
Gruß
Dirk
Dann so,...
03.04.2017 11:56:39
Case
Hallo Dirk, :-)
... bei Bedarf noch ins "Private Sub Workbook_Open()":;-)
Option Explicit
Private Sub Worksheet_Activate()
Dim varArr As Variant
Dim objDic As Object
Dim lngTMP As Long
On Error GoTo Fin
With ThisWorkbook.Worksheets("Daten")
Set objDic = CreateObject("Scripting.Dictionary")
varArr = .Range("I1:i" & .Cells(Rows.Count, 9).End(xlUp).Row)
For lngTMP = LBound(varArr) To UBound(varArr)
If Not objDic.exists(varArr(lngTMP, 1)) Then
objDic.Add varArr(lngTMP, 1), "H2SO4"
End If
Next lngTMP
With Combo_OV
.List = objDic.Keys
.ListIndex = 0
End With
End With
Fin:
Set objDic = Nothing
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Servus
Case

Anzeige
AW: Dann so,...
03.04.2017 12:05:00
Dirk
Hallo Case,
funktioniert leider auch nicht. Ebenfalls alle Wiederholungen beinhaltet und zum Ende bekomme ich die MsgBox "70 Zugriff verweigert". Daher gehe ich davon aus, dass der Inhalt der Combobox noch der alte ist, der vorher drin stand. Viel gravierenderer Nachteil: Ich verstehe von dem Code fast nichts, was ja immer etwas gefährlich ist... :-)
Dennoch Danke!
Gruß
Dirk
AW: Hier hast Du meine...
03.04.2017 14:01:06
Dirk
Hallo Case,
ja, jetzt funktioniert es. keine Ahnung warum.... Drei Fragen habe ich zu dem Makro:
1. Lassen sich die Einträge der Combobox auch alphabetisch sortieren?
2. Was soll hier passieren: objDic.Add varArr(lngTMP, 1), "H2SO4" ?
3. Was bedeutet der Error-Teil FIN ?
Ist immer doof, wenn man etwas nicht versteht. Solange es funktioniert ist es kein Problem, aber dann....
Vielen herzlichen Dank!
Dirk
AW: Einfachere Variante für sortierte Listen
03.04.2017 14:27:52
Daniel
Hi
hier mal eine alternative Variante für das Erstellen einer sortierten Comboboxliste ohne Duplikate.
ist für dich als Anfänger vielleicht einfacher nachzuvollziehen, da keine spezialfuntkionen verwendet werden.
Private Sub Worksheet_Activate()
Dim arrI
Dim z As Long
Dim i As Long
With Sheets("Daten")
With .Range(.Cells(1, 9), .Cells(1, 9).End(xlDown))
arrI = .Value
End With
End With
With Combo_OV
For z = 1 To UBound(arrI, 1)
For i = 0 To .ListCount - 1
If .List(i) = arrI(z, 1) Then
Exit For
ElseIf arrI(z, 1) 
Gruß Daniel
Anzeige
AW: Sortiert und ohne...
06.04.2017 15:40:12
Dirk
Hallo Case,
bei mir läuft jetzt alles tippi toppi. Danke nochmal. Ich wäre dir aber wirklich noch extrem dankbar, wenn du mir den Teil objDic.Add varArr(lngTMP, 1), "H2SO4" erläutern könntest. Denn das ist echt blöd, wenn man das nicht versteht. Was hat es damit - insbesondere mit "H2S04" auf sich!?
Vielen Dank!
Dirk
Anzeige
AW: Sortiert und ohne...
06.04.2017 17:00:04
Daniel
gar nichts.
für diese Aufgabe wird nur der Key-Teil des Dictionarys (die Indizes) benötigt.
was im Item-Teil steht ist egal und du kannst da irgendwas reinschreiben, kann auch 0 oder "" sein.
es muss nur mindestes ein Dicitionary-Eintrag mit dem entsprechenden Key angelegt werden, dazu muss man irgendwas als Item-Wert eintragen.
Gruß Daniel
AW: Sortiert und ohne...
07.04.2017 07:59:08
Dirk
Hallo Daniel,
na, das muss ich mir sicher noch dreimal durchlesen :-) Aber vielen Dank! Man lernt ja nie aus :-)
Dir ein schönes Wochenende!
Gruß
Dirk
AW: Sortiert und ohne...
09.04.2017 14:20:40
Daniel
Ist eigentlich ganz einfach.
Mit .AddItem kann man Elemente nicht nur am Ende, sondern auch an einer beliebigen Stelle mitten drin einfügen.
Die innere Schleife durchsucht die Liste von Anfang, um die richtige Stelle zu finden und fügt dann dort ein.
Gruß Daniel
AW: Sortiert und ohne...
10.04.2017 07:51:12
Dirk
Hallo Daniel,
interessant! Vielen Dank. Zum Glück erwarten wir die Osterfeiertage. Da kann ich mir ja schön die Zeit vertreiben :-)
Nein, im ernst: Vielen herzlichen Dank. Sehr hilfreich.
Gruß
Dirk
scripting.Dictionary (ohne Doppelte)
03.04.2017 12:02:12
Matthias
Hallo

Option Explicit
Private Sub Worksheet_Activate()
Dim objDic As Object, Bereich As Range, Zelle As Range
Set objDic = CreateObject("Scripting.Dictionary")
With Worksheets("Daten")
Set Bereich = .Range(.Range("I1"), .Range("I2").End(xlDown)) 'relevanten Bereich ermitteln
For Each Zelle In Bereich
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
Combo_OV.Clear
Combo_OV.List = objDic.keys 'Unikate der ComboBox zuweisen
End With
End Sub
Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige