Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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

Inhalt Combobox jede 41ste Zelle

Inhalt Combobox jede 41ste Zelle
05.08.2014 14:25:22
Andreas
Hallo Excelprofis,
Mit folgendem Code fülle ich eine ComboBox (UserForm) mit Werten des Zellbereiches B1 bis B100, wobei alle leeren Zellen nicht angezeigt werden. Danke an dieses Forum.
Jetzt benötige ich etwas ähnliches. Jetzt soll eine Combobox die Werte der Zellen B1, B42,B83 (also jede 41ste Zelle) bis Zelle B 15378 beinhalten und dabei alle Leeren auslassen. Später möchte ich dann per Commandbutton in die Zeile der Comboboxauswahl springen.
Kann mir bitte Jemand helfen.

Private Sub UserForm_Initialize()
ComboBox500.List = UniqueList(Worksheets("Einzelliste").Range("B1:B100"))
End Sub
' erzeugt aus einem Bereich ein Array ohne doppelte Werte
Function UniqueList(Matrix As Range) As Variant
Dim objDic As Object ' ein Dictionary-Objekt, benutzt werden nur die Keys, nicht die Werte
Dim rngCell As Range ' eine Zelle im Bereich
Set objDic = CreateObject("Scripting.Dictionary")  ' das Dictionary erzeugen
For Each rngCell In Matrix ' alle Zellen des Bereichs durchlaufen
' im Dictionary dem Objekt mit dem Key rngCell.Value (das ist der Zellinhalt) 0 zuweisen
' falls dieses Objekt noch nicht existiert wird es automatisch angelegt
' falls es bereits existiert wird ihm erneut 0 zugewiesen
' -> in objDic gibt es keine doppelte Keys !!!
If rngCell.Value  "" Then objDic(rngCell.Value) = 0
Next
UniqueList = objDic.keys ' das liefert nun ein Array mit allen Keys
Set objDic = Nothing
End Function

Danke fürs lesen!
mfg, Andreas

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

Betreff
Datum
Anwender
Anzeige
AW: Inhalt Combobox jede 41ste Zelle
05.08.2014 14:34:30
Daniel
Hi
die Combobox muss zweispaltig angelegt werden (ColumCount-Eigenschaft auf 2 setzen)
Befüllung:
With Combobox1
.Clear
For i = 1 to 15378 Step 41
if Cells(i, 2)  "" Then
.AddItem Cells(i, 2).value
.List(.ListCount - 1, 1) = i
end if
Next
End with
die Zeilennummer des gewählten eintrags bekommst du dann mit:
=Combobox1.List(Combobox1.ListIndex, 1)
oder mit:
=Combobox1.Value
wenn du die BoundColumn-Eigenschaft auf 2 setzt.
Gruß Daniel

AW: Inhalt Combobox jede 41ste Zelle
05.08.2014 15:02:01
Andreas
Hallo Daniel,
Vielen Dank für die Hilfe, klappt super. Noch ne kleine Frage: gibt es eine Möglichkeit, dass ich trotzdem nur eine Spalte in der Combobox angezeigt bekomme. Über die Breite der Combobox gehts nicht, weil die Zelleinträge unterschiedlich breit sind.
Nochmals Danke für die Hilfe.
mfg, Andreas

Anzeige
AW: Inhalt Combobox jede 41ste Zelle
05.08.2014 15:07:27
Daniel
über die Eigenschaft ColumnWidth kannst du regeln, wie breit die Spalten in der Klappliste sein sollen. Zum Ausblenden für die Spalte 0 eingeben, dh in deinem Fall vielleicht: "50;0" als ColumnWidth.
im Textfeld kannst du sowieso nur einen Wert anzeigen lassen, hier stellst du die Spalte über die Eigenschaft "Textcolumn" ein.
Gruß Daniel

Vielen Dank für die Hilfe! Schönen Tag noch. owT.
05.08.2014 15:22:23
Andreas
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige