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

Inhalt aus Spalte in Kombinationsfeld schreiben

Inhalt aus Spalte in Kombinationsfeld schreiben
11.08.2017 19:26:54
Dominik
Hallo an alle,
habe gerade wieder ein kleines Problem. Ich erkläre erst einmal was ich machen möchte. Also ich möchte eine Kombinationsfeld mit Werten füllen. Das Kombinationsfeld soll mit allen "Optionen" gefüllt werden die in einer Spalte stehen. Wichtig in der Spalte sind viele "Optionen" mehrfach vorhanden. Im Kombinationsfeld soll aber jede "Option" nur einfach vorkommen.
Nun was ich gemacht habe:
In der vierten Spalte werden alle Zelleninhalte ab Zeile 13 in eine Object-Variable geschrieben. Durch die Schleife erkenne ich sobald meine Liste in der Excel-Datei abgearbeitet wurde. Durch den Befehl "Not objOptionenListe.exists" kann ich sicherstellen, dass jede Option nur einmal vorkommen. Das klappt auch alles soweit richtig gut. Mit Debug.Print konnte ich mir auch anzeigen lassen, dass der Befehl "Join(objOptionenListe.Keys, vbCrLf)" alle Optionen unter einander schreibt (mit Enter-Zeichen). Was aber nicht klappt dies in das Kombinationsfeld zu übernehmen Hier wird alles hintereinander (in eine Zeile) geschrieben und nicht jede Option einzeln (untereinander).
Könnt Ihr mir sagen ob ich die falsche Funktion/Methode für das Kombinationsfeld verwende oder ob Ihr eine ander Möglichkeit wisst wie ich mein Problem lösen kann. Ich finde das mit der Object-Variablen schön, weil es recht gut verständlich und übersichtlich ist.
Vielen Dank schon jetzt für eure Hilfe.
Gruß
Dominik
Mein Code:
In Modul modUserForm
Function Optionen() As String
Dim objOptionenListe As Object
Dim intZeileManageMyLabelsNummer As Integer
Dim strOption As String
Dim strOptionsListe As String
Dim intStartZeile As Integer
Dim intSpalteOptionen As Integer
intStartZeile = 13 'Starten in Zeile
intSpalteOptionen = 4 'Inhalt aus Spalte
Set objOptionenListe = CreateObject("Scripting.Dictionary")
While Tabelle1.Cells(intStartZeile, intSpalteOptionen) ""
strOption = ActiveSheet.Cells(intStartZeile, intSpalteOptionen)
If Not objOptionenListe.exists(strOption) Then objOptionenListe.Add strOption, 1
intStartZeile = intStartZeile + 1
Wend
strOptionsListe = Join(objOptionenListe.Keys, vbCrLf)
'Debug.Print strOptionsListe
Optionen = strOptionsListe
End Function Im UserForm
Private Sub UserForm_Activate()
klbOptionen.AddItem modUserForm.Optionen
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt aus Spalte in Kombinationsfeld schreiben
11.08.2017 19:59:25
Gerd
Hallo Dominik,
mit der AddItem-Methode wird das nichts.
Private Sub UserForm_Activate()
Dim objDic As Object, X As Variant, y As Variant
ComboBox1.Clear
With Tabelle1
X = .Range(.Cells(13, 4), .Cells(.Rows.Count, 4).End(xlUp)).Value
End With
Set objDic = CreateObject("scripting.dictionary")
For Each y In X
If Not objDic.exists(y) Then objDic.Add Key:=y, Item:=0
Next
ComboBox1.List = Application.Transpose(objDic.keys)
objDic.RemoveAll
Set objDic = Nothing
End Sub
Gruß Gerd
AW: Inhalt aus Spalte in Kombinationsfeld schreiben
15.08.2017 19:47:53
Dominik
Hallo Gerd,
vielen Dank für deine Hilfe. Ich hab es dank deines Beitrags hinbekommen meinen Code "umzubauen". Mein endgültiger Code sieht wie folgt aus. Ich arbeite eigendlich möglichst viel in Modulen um den Code im UserForm möglichst übersichtlich zu gestalten.
Achtung ich hab einige Public Variable bzw. Konstanten die ersetzen oder selbst definieren werden müssen.
Vielen Dank dir nochmal Gerd. Ich wünsche dir noch eine schöne Woche.
Gruß
Dominik
Im UserForm
Private Sub UserForm_Activate()
'Befüllen der KombiListenBoxen und ListenBoxen
klbOptionen.Clear
klbSchildgroesse.Clear
klbOptionen.List = Application.Transpose(modUserFormUsfSchildEinpflegen.Optionen.Keys)
klbSchildgroesse.List = Application.Transpose(modUserFormUsfSchildEinpflegen.Schildgroessen. _
Keys)
End Sub
Im Modul modUserFormUsfSchildEinpflegen
Function Optionen() As Object
Dim intZeileManageMyLabelsNummer As Integer
Dim strOption As String
intZeileManageMyLabelsNummer = p_cintStartZeile 'Starten in Zeile
Set Optionen = CreateObject("Scripting.Dictionary")
While Tabelle1.Cells(intZeileManageMyLabelsNummer, p_cintSpalteOptionen) ""
strOption = Tabelle1.Cells(intZeileManageMyLabelsNummer, p_cintSpalteOptionen)
If Not Optionen.exists(strOption) Then Optionen.Add strOption, 1
intZeileManageMyLabelsNummer = intZeileManageMyLabelsNummer + 1
Wend
'Debug.Print Join(Optionen.Keys, vbCrLf)
End Function
Function Schildgroessen() As Object
Dim intStartZeile As Integer
Dim strSchildgroesse As String
intStartZeile = p_cintStartZeileSchildgroesseTabelle2 'Starten in Zeile
Set Schildgroessen = CreateObject("Scripting.Dictionary")
While Tabelle2.Cells(intStartZeile, p_cintSpalteOptionen) ""
strSchildgroesse = Tabelle2.Cells(intStartZeile, p_cintSpalteSchildgroesseTabelle2)
If Not Schildgroessen.exists(strSchildgroesse) Then Schildgroessen.Add strSchildgroesse, 1
intStartZeile = intStartZeile + 1
Wend
'Debug.Print Join(Schildgroessen.Keys, vbCrLf)
End Function
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige