Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1152to1156
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
Comboboxen Dynamisch füllen
Michael
Hallo Zusammen.
Ich habe folgendes Problem.
Ich will 2 Comboboxen abhänig von einander füllen. Comboboxen auf Tabelle1.
Combobox1 soll die Werte aus Tabelle "Task-ID" Bereich B1-AD1 enthalten.
Zusätzlich soll in der Auswahl der Text aus Tabelle "DML-IDs" angezeigt werden.
Natürlich nur wenn der Wert auch dort gefunden wird.
Combobox2 soll dann die Werte anzeigen je nach dem was in Combobox1 ausgewählt wurde.
Die Verknüpfung der Werte ist in Tabelle "Task-ID" zu finden.
Beispiel:
Combobox 1 wurde der Wert 1000 ausgewählt.
Combobox 2 enthält nur die Werte:
2220
2221
2222
3648
3649
3650
3651
3652
3653
3654
3655
Kann mir da bitte jemand helfen.
Ich habs schon über Gültigkeit versucht.
Das geht aus verschiedenen Gründen nicht
https://www.herber.de/bbs/user/69216.xlsx
AW: Comboboxen Dynamisch füllen
23.04.2010 19:00:53
ransi
HAllo
ICh habs mal versucht.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub ComboBox1_GotFocus()
ComboBox1.List = WorksheetFunction.Transpose(Sheets("DML-IDs").Range("A4:A24"))
End Sub


Private Sub ComboBox1_Change()
Dim Bereich As Range
Dim rng As Range
Dim arr
Set Bereich = Sheets("Task-ID").Range("C1:Y1")
Set rng = Bereich.Find(ComboBox1.Value)
arr = Sheets("Task-ID").Range(rng.Offset(1, 0), rng.End(xlDown))
With ComboBox2
    .List = WorksheetFunction.Transpose(arr)
    .ListIndex = 0
End With
End Sub


Ist allerdings ohne irgendeine Fehlerroutine.
Teste mal.
ransi
Anzeige
Den Code von ransi etwas erweitert
23.04.2010 21:11:59
ransi
Hi,
Private Sub ComboBox1_GotFocus()
Dim Daten As Variant
Dim z As Integer
Dim LZ As Integer
LZ = Sheets("DML-IDs").Cells(Rows.Count, "A").End(xlUp).Row - 4
ReDim Daten(LZ, 1)
With ComboBox1
.Clear
.ColumnCount = 2
.ColumnWidths = "2cm;6cm"
For z = 0 To LZ
Daten(z, 0) = Sheets("DML-IDs").Cells(z + 4, "A")
Daten(z, 1) = Sheets("DML-IDs").Cells(z + 4, "B")
Next
.List = Daten
.ListIndex = 0
End With
End Sub
Private Sub ComboBox1_Change()
Dim Bereich As Range
Dim rng As Range
Dim arr
ComboBox2.Clear
If IsNumeric(ComboBox1.Value) And Len(ComboBox1.Value) = 4 Then
Set Bereich = Sheets("Task-ID").Range("C1:Y1")
Set rng = Bereich.Find(ComboBox1.Value)
arr = Sheets("Task-ID").Range(rng.Offset(1, 0), rng.End(xlDown))
With ComboBox2
.List = WorksheetFunction.Transpose(arr)
.ListIndex = 0
End With
End If
End Sub
Gruß Jürgen
Anzeige
Noch eine Fehlermeldung abgefangen
23.04.2010 22:34:50
Backowe
Hi,
Private Sub ComboBox1_GotFocus()
Dim Daten As Variant
Dim z As Integer
Dim LZ As Integer
LZ = Sheets("DML-IDs").Cells(Rows.Count, "A").End(xlUp).Row - 4
ReDim Daten(LZ, 1)
With ComboBox1
.Clear
.ColumnCount = 2
.ColumnWidths = "2cm;6cm"
For z = 0 To LZ
Daten(z, 0) = Sheets("DML-IDs").Cells(z + 4, "A")
Daten(z, 1) = Sheets("DML-IDs").Cells(z + 4, "B")
Next
.List = Daten
End With
End Sub
Private Sub ComboBox1_Change()
Dim Bereich As Range
Dim rng As Range
Dim arr
ComboBox2.Clear
If IsNumeric(ComboBox1.Value) And Len(ComboBox1.Value) = 4 Then
Set Bereich = Sheets("Task-ID").Range("C1:Y1")
Set rng = Bereich.Find(ComboBox1.Value)
If Not rng Is Nothing Then
arr = Sheets("Task-ID").Range(rng.Offset(1, 0), rng.End(xlDown))
With ComboBox2
.List = WorksheetFunction.Transpose(arr)
.ListIndex = 0
End With
End If
End If
End Sub
Gruß Jürgen
Anzeige
AW: Noch eine Fehlermeldung abgefangen
26.04.2010 16:33:59
Michael
Hallo Jürgen.
Echt prima. Funktioniert fast perfekt.
Ein kleines Problem habe ich noch.
Wenn ich die ComboBox ein aufklappe dann muss ich im Wertebereich der sich dann auftut scrollen.
Ich möchte aber das der Text zu dem DML-IDs ohne scrolen nach rechts lesbar ist.
Kann man die Größe der Wertehilfe anpassen ohne die ComboBox zu vergrößern?
AW: Noch eine Fehlermeldung abgefangen
26.04.2010 16:39:28
Backowe
Hi Michael,
schau Dir mal die Beispieldatei mit der Listbox an.
Gruß Jürgen
AW: Noch eine Fehlermeldung abgefangen
26.04.2010 21:52:15
Backowe
Hi Michael,
Private Sub Combobox1_GotFocus()
Dim Daten As Variant
Dim z As Integer
Dim LS As Integer
Dim Bereich As Range
Dim rng As Range
LS = Sheets("Task-ID").Cells(1, Columns.Count).End(xlToLeft).Column - 2
ReDim Daten(LS, 0)
With ComboBox1
.Clear
For z = 0 To LS
Set Bereich = Sheets("DML-IDs").Columns(1)
Set rng = Bereich.Find(Sheets("Task-ID").Cells(1, z + 2))
Daten(z, 0) = Sheets("Task-ID").Cells(1, z + 2)
If Not rng Is Nothing Then
Daten(z, 0) = Sheets("DML-IDs").Columns(1).Find(Sheets("Task-ID").Cells(1, z + 2)) & " - _
///- " & _
Sheets("DML-IDs").Columns(2).Find(Sheets("Task-ID").Cells(1, z + 2))
End If
Next
.List = Daten
End With
End Sub
Private Sub Combobox1_Change()
Dim Bereich As Range
Dim rng As Range
Dim arr
ComboBox2.Clear
Set Bereich = Sheets("Task-ID").Range("B1:AA1")
If IsNumeric(Left(ComboBox1.Text, 4)) Then
Set rng = Bereich.Find(Left(ComboBox1.Text, 4))
Else
Set rng = Bereich.Find(Left(ComboBox1.Text, Len(ComboBox1.Text)))
End If
If Not rng Is Nothing Then
arr = Sheets("Task-ID").Range(rng.Offset(1, 0), rng.End(xlDown))
With ComboBox2
.List = WorksheetFunction.Transpose(arr)
.ListIndex = 0
End With
End If

Anzeige
Noch eine Fehlermeldung abgefangen
27.04.2010 08:57:19
Michael
Hallo Jürgen.
Vielen Dank nochmal für deine Bemühungen.
Wie gesagt es funktioniert ja schon so wie es soll.
Aber das was mir noch fehlt ist die Werteauswahl zu vergrösseren.
Ich habe die mal einen Screenshot angefügt.
Userbild
Da kann man denke ich am besten erkennen was ich meine.
Was ich möchte ist das diese Auswahl einfach breiter ist, so dass man den Text besser lesen kann.
Ich muss leider mit 2 ComboBoxen arbeiten und kann nicht mit der Listbox arbeiten.
Gruß Michael.
Anzeige
Dann verbreitere doch einfach die Combobox1
27.04.2010 09:50:39
Backowe
Hi Michael,
schalte doch einfach den Entwurfsmodus ein und verbreitere die Combobox.
Gruß Jürgen
AW: Dann verbreitere doch einfach die Combobox1
27.04.2010 10:32:13
Michael
Hi Jürgen.
Ich habs gefunden.
Es geht über die Eigenschaft "ListWidth".
Noch ein andere Kleinigkeit.
Die ComboBoxen werden nur dann gefüllt wenn das WorkSheet aktiviert wird.
Beim öffnen der Datei wird die Prozedur scheinbar aber nicht durchlaufen.
Ich muss erst ein ein anderes WorkSheet springen und dan wieder zurück.
Dann sind die ComboBoxen gefüllt.
Es gibt doch aber bestimmt eine Funktion die beim öffnen der Datei durchlaufen wird, so das die CombBoxen sofort gefüllt sind.
Gruß Michael.
Anzeige
Hi, habe Dir doch einen neuen Code ...
27.04.2010 11:34:50
Backowe
... gesandt, da hatte ich es wieder auf Combobox1_GotFocus abgeändert.
Gruß Jürgen
AW: Hi, habe Dir doch einen neuen Code ...
27.04.2010 12:59:43
Michael
Hallo Jürgen.
Ich kann mich nur herzlich bedanken.
Alles funktioniert jetzt wie ich mir das vorgestellt habe.
Danke.

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige