Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

ComboBox1 Liste per VBA befuellen

Betrifft: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 09:46:15

Hallo,

ich habe in dem Tabellenblatt "Deutschland" die "ComboBox1".

Diese moechte ich mit Daten aus einem anderen Tabellenblatt der gleichen Datei befuellen.
Die "Befuellung" der "ComboBox1" mit Daten soll passieren, wenn in einem Userform der Button "CommandButton1" gedrueckt wird.

Die Daten die in die "ComboBox1" geschrieben werden sollen, stehen in dem Tabellenblatt "Personalstammdaten A-M" in den Datenfeldern "C1:C87".

Wie bekomme ich diese Daten in die "ComboBox1" per VBA ?

Vielen Dank fuer Eure Unterstuetzung,

Uwe

  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 09:56:14

hi Uwe

Private Sub CommandButton1_Click()
Dim i As Byte

ComboBox1.Clear
For i = 1 To 87
    ComboBox1.AddItem Worksheets("Personalstammdaten A-M").Cells(i, 3)
Next i
End Sub

cu
Chris


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 10:11:28

Schon mal vielen Dank Chris,

es kommt jedoch die Fehlermeldung "Object required".

Liegt es vielleicht daran, das in dem Makro noch erwaehnt werden muss, das sich die "ComboBox1" in dem Tabllenblatt "Deutschland" befindet ?

Danke fuer deine Hilfe,

Gruss,

Uwe


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 10:16:39

Hi Uwe

Ja genau, habe nur Userform gelesen ;)

Private Sub CommandButton1_Click()
 Dim i As Byte
 
 Worksheets("Deutschland").ComboBox1.Clear
 For i = 1 To 87
 Worksheets("Deutschland").ComboBox1.AddItem Worksheets("Personalstammdaten A-M").Cells(i, 3)
 Next i
End Sub

cu
Chris


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 10:33:07

Hey super. Das hat schon einmal riesig geholfen und funktioniert.
Bekommst du auch noch das folgende hin:

Es soll immer der "Erste Wert" von dem Bezug auf die Datenreihe "C1:C87" ( also der Wert der in C1" steht ) in der "ComboBox1" eingetragen werden. ( Da steht bei mir "Mitarbeiter auswaeheln" und die Benutzer wissen dann was sie mit diesem Button zu tun haben )

Zusaetzlich soll auch noch ein Wert des "Namens" ausgegeben werden in Zelle "B6" in dem Tabllenblatt "Deutschland"
Wird also z.B. der 5. Name des Bereiches "C1:C87" ausgewaehlt, dann soll die Zahl "5" in "B6" geschrieben werden. Diese Zahlen stehen passend zu "C1:C87" in "A1:A87" im Blatt "Personalstammdaten A-M".

Diesen Wert z.B. "5" nutze ich dann mit SVERWEIS um weitere Daten in das Tabellenblatt "Deutschland" zu schreiben.

Vielen Dank !


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 10:55:15

Hi Uwe

Private Sub CommandButton1_Click()
Dim i As Byte

With Worksheets("Deutschland").ComboBox1
    .Clear
    For i = 1 To 87
        .AddItem Worksheets("Personalstammdaten A-M").Cells(i, 3)
    Next i
    .ListIndex = 0
End With
End Sub

Private Sub ComboBox1_Change()
On Error Resume Next
With Worksheets("Deutschland")
    .Range("B6") = Worksheets("Personalstammdaten A-M").Cells(.ComboBox1.ListIndex + 1, 1)
End With
End Sub
cu
Chris


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 11:24:46

Private Sub ComboBox1_Change()
On Error Resume Next
With Worksheets("Deutschland")
    .Range("B6") = Worksheets("Personalstammdaten A-M").Cells(.ComboBox1.ListIndex + 1, 1)
End With
End Sub

Das funktioniert jetzt, das er die Werte 1,2,3 usw. richtig in die das Feld "B6" schriebt. Es gibt nur noch ein Problem.
Ueber einen CommandButton2 rufe ich machmal auch die Daten aus dem Tabellenblatt "Personalstammdaten N-Z" auf.
Dann stehen die richtigen Namen in der Combobox, er "schaut" im SVERWEIS jedoch immer noch in dem Tabellenblatt "Personalstammdaten A-M" nach.

Daher sollte er sich in dem Befehl der oben steht und den ich in die ComboBox1 kopiert habe besser immer auf die Spalte "A" des Tabellenblattes beziehen, aus dem die Namen wirklich kommen.


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 11:30:28

bin im Urlaub


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 11:34:03

Na dann erst einmal schoenen Urlaub !
Vielleicht kannst du es dir ja spaeter einmal anschauen


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 12:59:07

Hi Uwe

Danke für deine Urlaubswünsche, aber ich bin gar nicht im Urlaub, sondern war gerade etwas genervt. Aufgrund deiner Salamitaktik wäre es bereits das dritte oder vierte mal, wo ich die gleiche Datei nachbaue. Und wenn man eine VBA Lösung will, müsste man sich schon ein wenig mit dem Code beschäftigen. Für Auftragsprogrammierung gibt es entsprechende Firmen.

Nachdem ich mir nun Luft gemacht habe, zurück zum Thema ;)

Lade mal eine Beispieldatei hoch und beschreibe das (ganze) Problem.

cu
Chris


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 13:53:11

Hallo Chris,

sorry, das ergab sich erst aus dem einfuegen der VBA Codes.
Vielen Dank fuer deine Hilfe.

Dies hier ist die Beispieldatei:
https://www.herber.de/bbs/user/104190.xlsm

Es funktioniert ja auch soweit alles. Ueber die beiden CommanButton 1+2 im UserForm1 werden die Daten in die ComboBox der jeweiligen Blaetter eingefuegt.

Aber es haengt halt noch der SVERWEIS dahinter. Dieser bezieht sich auf das Datenfeld "B6" im Tabellenblatt "Deutschland".

Wenn man jetzt zwischen den Daten der Namen "A-M", bw. "N-Z" hin und her wechselt, dann bezieht sich der SVERWEIS aufgrund der VBA Formel der ComboBox1 immer auf die Namen "A-M".

Auch das das #N/A erscheint verstehe ich nicht, wenn man die Namenslisten wechselt.

Uebrigens ist der Grund fuer den Wechsel der Namenslisten, damit nicht in einer Lister der ComboBox1 so viele Namen zur Auswahl stehen und man ewig an seinem Namen suchen muss.

Vielen Dank und liebe Gruesse,

Uwe


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 16:36:08

Hi Uwe

Geht doch :)
https://www.herber.de/bbs/user/104192.xlsm

Private Sub CommandButton1_Click()
Call CBfuellen(Worksheets("Personalstammdaten A-M"))
End Sub
Private Sub CommandButton2_Click()
Call CBfuellen(Worksheets("Personalstammdaten N-Z"))
End Sub

Private Sub CBfuellen(WS As Worksheet)
Dim i As Byte

With Worksheets("Deutschland")
    .ComboBox1.Clear
    For i = 1 To WS.Range("A65536").End(xlUp).Row
        .ComboBox1.AddItem WS.Cells(i, 3)
    Next i
    .ComboBox1.ListIndex = 0
    .Range("A6") = WS.Name
    .Select
End With
Unload Me
End Sub

Der Tabellenname steht nun in A6, der SVERWEIS nimmt mit INDIREKT Bezug auf diesen Namen und #NV erscheint, weil Auswahl Null kein SVERWEIS Ergebnis liefert.
=WENN(ISTNV(SVERWEIS($B$6;INDIREKT("'"&A6&"'!$A$1:I108");9));"";SVERWEIS($B$6; INDIREKT("'"&A6&"'!$A$1:I108");9))

cu
Chris


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: ChrisL
Geschrieben am: 08.03.2016 16:37:35

Dim i As Long
(anstelle von Byte)

Macht vermutlich keinen Unterschied aber dennoch besser...


  

Betrifft: AW: ComboBox1 Liste per VBA befuellen von: Uwe
Geschrieben am: 08.03.2016 16:41:32

Einfach Weltklasse. Fantastisch !
Ich werde es morgen mal einbauen und ein wenig rumspielen.

Vielen vielen Dank und noch einen schoenen Urlaub :-)


 

Beiträge aus den Excel-Beispielen zum Thema "ComboBox1 Liste per VBA befuellen"