2016-03-19 4 views
-1

Ich habe ein Benutzerformular namens "deleteaccount" mit einem Kombinationsfeld darin. Wenn Sie auf die Schaltfläche klicken, lädt das Benutzerformular die Liste aus dem Bereich. Wenn sich keine Daten im Bereich befinden, sollte ein Fehler angezeigt werden: "Nichts ist zum Laden verfügbar" und es wird sub beendet. Bisher habe ich den folgenden Code entwickelt, konnte aber nicht die gewünschten Ergebnisse finden.Code zum Ein-/Ausblenden des Benutzerformulars, wenn nichts in der Combobox geladen werden soll

Private Sub CommandButton5_Click() 

'ASSIGNING THE VARIABLES 
Dim ws As Worksheet, tbl As ListObject, rng As Range 

'Declaring the Variables 
Set ws = Sheets("Cash and Bank Account Details") 
Set tbl = ws.ListObjects("newaccount") 
Set rng = tbl.ListColumns(3).DataBodyRange 

For Each rng In rng 
deleteaccount.ComboBox1.AddItem rng.Value 
deleteaccount.ComboBox1.ListIndex = 0 
Next 

If deleteaccount.ComboBox1.ListCount = 0 Then 
MsgBox "nothing is load" 
Exit Sub 
Else 
deleteaccount.Show 
End If 
End Sub 

Bitte überprüfen Sie und helfen Sie mir, wo ich falsch liege.

Danke.

+1

Was ist der Unterschied zwischen dieser Frage und Ihrer letzten Frage? http://stackoverflow.com/questions/36093307/code-to-restrict-userform-from-loading-i-f-there-is-no-range-to-be-loaded-in-comb Auch du versäumst was zu sagen Sie Problem/Fehler/Fehler ist (diesmal). – Ralph

+0

in der letzten Frage, verwendet die Benutzerform Initialisierung, aber in diesem ich habe versucht, den gesamten Code unter einer Taste. Keine Benutzerformularinitialisierung. Diesmal gibt es einen Laufzeitfehler und einen Objektfehler. –

+0

Ist die Befehlsschaltfläche eine Schaltfläche auf dem Blatt oder innerhalb des Benutzerformulars? – mongoose36

Antwort

0

Die Kommentare müssen Orte wechseln (nichts mit Ihrem Problem zu tun). Anstatt For Each rng In rng möchten Sie durch die Zellen in rng lop und in das Kombinationsfeld hinzufügen? Was ich meine, ist: Sie verwenden für jedes Rng In Rng Das ist falsch, weil Sie rng zweimal mit unterschiedlichen Zwecken jedes Mal verwenden. Wenn Sie wissen, dass der Bereich auf dem Arbeitsblatt eine Spalte ist, können Sie versuchen

For i = 1 to rng.Rows.count 
    deleteaccount.ComboBox1.AddItem rng.Cells(i, 1).Value 
Next i 
deleteaccount.ComboBox1.ListIndex = 0 
+0

genau, ich möchte Code durch die Spalte 3 durchlaufen und füllen Sie die Liste in Combobox, falls vorhanden. Wenn nichts vorhanden ist, sollte nur die Meldung "nichts zu laden" angezeigt werden. –

+0

Ich dachte meine Antwort war klar. Ich werde es erweitern. – MikeC

Verwandte Themen