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

Combobox mit 2 einträgen

Combobox mit 2 einträgen
10.07.2017 20:28:06
Khan
Hallo,
Ich bin neue hier im Forum und bin gerade dabei mir das Excel/VBA Programmieren beizubringen. Im Forum habe ich einen Quellcode für eine Combobox gefunden. Der Code funktioniert soweit.
Ich würde den Code aber gerne so umbauen, dass ich eine Combobox mit 2 Spalten angezeigt bekomme.
Die Werte für die Combobox stehen in der Arbeitsmappe "Uebersich" in der Spalte "B" (Name) z.B. Thomas Schmidt und "D" (ID) 16295. Die Liste ist dynamisch und ändert sich.
Also wenn man Schmidt oder 16295 eingibt sollte man Thomas Schmidt 16295 als Vorschlag erhalten.
Nachdem man dann seine Auswahl getroffen hat, würde ich mit dem entsprechenden ID Wert weitermachen.
Sprich es geht darum aus einer Liste einen bestimmten ID Wert zu ermitteln.
Im Moment ist es so, dass wenn man eine Zahl in der Combobox eingibt, man eine Fehlermeldung erhält (Index außerhalb gültigen Bereich).
Ich vermute mal das es daran liegt das sText als String deklariert ist.
Meine Versuche das zu ändern, führten leider zu weiteren Fehlermeldungen. In den Eigenschaften für die Combobox habe ich bei ColummCount eine 2 eingetragen.
Kann mir bitte jemand bei diesem Problem helfen und mir genau den Code erklären.
Im Moment blicke ich da nicht genau durch. Danke

Private Sub cboListe_Change()
cboListe.List = fncListe(cboListe.Value)
cboListe.DropDown
End Sub

Private Sub UserForm_Activate()
cboListe.List = fncListe
End Sub

Function fncListe(Optional sText As String)
Dim arrTmp, n As Integer, i As Integer, arrListe()
arrTmp = Range(Cells(7, 2), Cells(Rows.Count, 2).End(xlUp)) 'Listenbereich
ReDim arrListe(1 To UBound(arrTmp))
For i = 1 To UBound(arrTmp)
If arrTmp(i, 1) Like "*" & sText & "*" Then
n = n + 1
arrListe(n) = arrTmp(i, 1)
End If
Next
ReDim Preserve arrListe(1 To n)
fncListe = arrListe
End Function

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

Betreff
Datum
Anwender
Anzeige
AW: Combobox mit 2 einträgen
10.07.2017 23:53:32
fcs
Hallo Khan,
das kann so leider nicht funktionieren, da an dem Steuerelement, dass den Fokus hat eine unzulässige Änderung durchgeführt werden soll und es auch zu wiederholten Aufrufen der Ereignisprozedur kommt.
Wenn du die Auswahlliste der Combobox reduzieren willst, dann musst du dies über ein anderes Steuerelement machen, z.B. eine Textbox.
Ich hab dir hier eine kleine Beispieldatei gebastelt inklusive erforderlicher Korrekturen an der Function, die die Auswahlliste erzeugt. Neben dem Namen und der ID wird in der 3. Spalte (ausgeblendet) die Tabellenzeile eingetragen. So kann man schnell/einfach auf die Daten zu dem in der Combobox gewählten Datensatz im Tabellenblatt zugreifen.
https://www.herber.de/bbs/user/114796.xlsm
Gruß
Franz
Anzeige
AW: Combobox mit 2 einträgen
12.07.2017 00:34:12
Khan
Hallo Franz,
erstmal danke für deine Hilfe.
Ich habe nun versucht den Code für mich anzupassen.
in meiner Excel Datei gibt es passend zu jeder ID eine gleichnamige Registerkarte.
Wenn man nun im UserForm auf Ok Klickt soll die entsprechende Registerkarte aufgerufen wird.
Private Sub cmdOk_Click()
Dim Zeile As Long
Dim ID As Integer
If Me.cboListe.ListIndex = -1 Then
MsgBox "Hier passiert nichts, solange in der Combobox nichts ausgewählt ist"
Else
With Me.cboListe
Zeile = .List(.ListIndex, 2) 'Zeile im Tabellenblatt
End With
ID = ActiveSheet.Cells(Zeile, 4).Value
Worksheets(ID).Select
Unload Me
End If
End Sub
Leider bekomme ich immer die Fehlermeldung: Index außerhalb gültigen Bereich.
Wenn ich der Variablen ID selbst z.B. die 16295 zuweise funktioniert der Code.
ID = "16295"
Worksheets(ID).Select
Was mache ich falsch?
Anzeige
AW: Combobox mit 2 einträgen
12.07.2017 03:18:37
fcs
Hallo Khan,
ID ist eine Zahl
Worksheets(ID).Select
bedeutet dann dass das Blatt mit der Index-Nummer ID selektiert werden soll.
Bei ID = 16225 hat deine Datei aber nicht so viele Tabellenblätter - deshalb der Index-Fehler.
Damit es funktioniert muss in deinem Fall die Indexnummer in Text umgewandelt werden.
Worksheets(Format(ID,"0")).Select
sollte funktionieren.
Gruß
FRanz
evtl geht auch: Worksheets(CStr(ID)).Select
12.07.2017 11:23:47
Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige