ComboBox mit Teil einer Liste füllen
#21
Hallo Ralf,

für die Initialisierung würde ich das so machen

Code:
Private Sub UserForm_Initialize()
  Dim loLetzte As Long
  Dim objWs As Worksheet
  Dim intZ As Integer
 
  Set objWs = ThisWorkbook.Worksheets("Datenbankliste")
  '   loLetzte = objWs.Cells(Rows.Count, 9).End(xlUp).Row                     ' letzte belegte in Spalte I (9)
  '   With ComboBox1
  '      .List = objWs.Range("I2:I" & loLetzte).Value
  '      For i = .ListCount - 1 To 0 Step -1
  '         If Left(.List(i), 1) <> "A" Then .RemoveItem i
  '      Next i
  '   End With
 
    With UserForm1
   .ComboBox1.ColumnCount = 2                                         'Spaltenanzahl der Combobox
   .ComboBox1.ColumnWidths = "25;25"                                  'Spaltenbreite der Combobox "25;0" weißt der 2. Spalte die Länge 0 zu
   
      intZ = 0                                                                     'zum Festlegen der Zeile beim Befüllen der Combobox
      For i = 2 To objWs.Cells(2, 9).End(xlDown).Row
        If Left(objWs.Cells(i, 9), 1) = "A" Then
          .ComboBox1.AddItem objWs.Cells(i, 9)
          .ComboBox1.Column(1, intZ) = objWs.Cells(i, 9).Row            
          intZ = intZ + 1                                                        'Zeilenzähler erhöhen
        End If
      Next i
   End With

End Sub


Um nachher die Auswahl in der Combox zu ermitteln würde ich folgendes Konstrukt wählen:

Code:
Private Sub ComboBox1_Change()
Dim z As Integer
Dim strKFZKennz As String

With UserForm1
  z = .ComboBox1.ListIndex
  strKFZKennz = .ComboBox1.Column(1, z)
  MsgBox (strKFZKennz)
End With

End Sub

Das Klick-Event verwende ich in der Regel bei Listboxen. Ich habe es hier mit dem Change-Ereignis getestet und realisiert.

Warum das mit der Match-Funktion nicht klappt, bin ich überfragt. Ungetestet vielleicht so?

Code:
Zeile = WorksheetFunction.Match("ComboBox1.Text", Columns(9), 0)  

Gruß
Ich
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • Rabe
Top
#22
(04.08.2016, 10:17)Rabe schrieb: ...

Warum wird das msgbox (strKFZKennz) vom Editor nicht automatisch so umgewandelt: MsgBox (...)?

Das hatte ich überlesen...

strKFZKennz = objWs.Cells(Zeile, 1).value


Achso und so bei Dir eingebettet:
Code:
Private Sub ComboBox1_Click()              ' Übernehmen
   Dim objWs As Worksheet
   Set objWs = ThisWorkbook.Worksheets("Datenbankliste")
   Dim z As Integer
   
   boAbbruch = False
   With UserForm1
   If ComboBox1.ListIndex >= 0 Then
      z = .ComboBox1.ListIndex
      Zeile = .ComboBox1.Column(1, z)
      
      strKFZKennz = objWs.Cells(Zeile, 1).Value
      MsgBox (strKFZKennz)

...

Ich hab's jetzt mehrfach getestet. Mit der Match-Funktion kriege ich es nicht hin.
Den restlichen Code von Dir kann ich leider nicht testen :32:
[-] Folgende(r) 1 Nutzer sagt Danke an IchBinIch für diesen Beitrag:
  • Rabe
Top
#23
Hi,

Klasse, danke!

(04.08.2016, 22:22)IchBinIch schrieb: Ich hab's jetzt mehrfach getestet. Mit der Match-Funktion kriege ich es nicht hin.
Den restlichen Code von Dir kann ich leider nicht testen :32:

Wenn es so funktioniert, dann brauche ich das Match ja auch nicht.
Nun mache ich mich ans weitertesten.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste