2017-01-19 8 views
0

Ich bin ein Neuling in VBA Excel und versuchen Sie hier, eine Combobox in einem Benutzerformular mit Daten aus einem Blatt zu füllen. Ich definierte Adresse & verwendet die .rowsource-Eigenschaft, wobei Code ohne Fehler durchlaufen, aber nichts auf der Combobox auffüllt. Jede Hilfe wird geschätzt.kann Combobox nicht mit .rowsource {vba Excel}

Unten finden Sie den Code -

Private Sub empSearchdb_Click()

Dim cell As Range 
Dim emptyRow As Long 
Dim rng As Range 
Dim ws1 As Worksheet 
Dim empSearchKeyword As String 

'Stop screen flickering 
Application.ScreenUpdating = False 

'setting worksheet 
Set ws1 = Sheets("EmployeeDetails") 
ws1.Activate 

'find last empty row 
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 2 

'when nothing is selected 
If Me.empSearchL.ListIndex = -1 Then 

    'from $A$1 to $J$lastrow-1 
    Set rng = Range("$A$1", Cells(emptyRow - 1, 10)) 

    With Me.empDetails 
     .RowSource = rng.Address 
    End With 

Neuer Code geändert -

Dim cell As Range 
Dim emptyRow As Long 
Dim rng As Range 
Dim ws1 As Worksheet 
Dim empSearchKeyword As String 

'Stop screen flickering 
Application.ScreenUpdating = False 

'setting worksheet 
Set ws1 = ActiveWorkbook.Sheets("EmployeeDetails") 

'find last empty row 
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 2 

'from $A$1 to $J$lastrow-1 
Set rng = ws1.Range("$A$1", ws1.Cells(emptyRow - 1, 10)) 
Set rng = ws1.Range("$A$1", "$J$10") 


'With your listbox do the following 
If Me.empSearchL.ListIndex = -1 Then 
    With Me.empDetails 
     'If nothing is selected, add a row source 
     .ColumnCount = 10 'Otherwise you will only get 1 column 
     .RowSource = rng.Address 
    End With 
End if 
Application.ScreenUpdating = True 
+0

Haben Sie tatsächlich eine 'Application.ScreenUpdating = True' nachdem der Code endet? Sie sollten mindestens bis "End If" zeigen. – Noceo

+0

@Noceo Yep Ich hatte am Ende "Application.ScreenUpdating = True". Sorry für unvollständigen Code, obwohl ich zwei weitere wenn Bedingungen für Listenindizes habe, aber ich bin besorgt über nur "List Index = -1". Dieser Code genügt, nur ein "End If" fehlt. – jay

Antwort

0

Edit: ich Antwort entfernt haben, wie ich hatte die Frage nicht richtig verstanden.

+0

Ich brauche Ergebnis in einer Combobox mit dem Namen 'empDetails' &' empSearchL' ist mein Listenfeld, aus dem ich die Kriterien auswähle. Kurz gesagt, wenn nichts in "empSearchL" ausgewählt ist und der Benutzer auf Suchen klickt, sollte es alles auf der Combobox anzeigen. Ich habe den obigen Code ausprobiert, aber es zeigt immer noch leere Combobox. Ich habe den modifizierten Code unten hinzugefügt. – jay

+0

Entschuldigung, ich dachte, es wäre eine Listbox, mein Fehler. Sie könnten den Steuerelementen Präfixe hinzufügen. Verwenden von MS-Standards, die 'cboEmpDetails' und' lstEmpSearch' wären. – Noceo

+0

Wenn also nichts in der Listbox ausgewählt ist, möchten Sie das Kombinationsfeld (Drop-Down), um alle 100 Elemente anzuzeigen? Das ist viel(!). Und was, wenn in der Listbox etwas ausgewählt ist, was dann in der Combobox angezeigt werden soll? – Noceo