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

VBA: ComboBox Zllbereich zuweisen

VBA: ComboBox Zllbereich zuweisen
13.02.2020 13:43:18
Charly
Hallo,
komme mal wieder nicht weiter.
Habe in eurem Archiv ein Bsp. gefunden, dass möcht Ich für mein Vorhaben nutzen.
In diesem Bsp. geht es um 3 ComboBoxen u. zwei Button.
Ich habe das Bsp. leicht abgeändert statt 3 sind es nun 4 ComboBoxen u. zwei Button,
die ComboBox sind wie im Bsp. Verschachtelt. Die Auswahl für ComboBox 1-3 ist im Code hinterlegt.
Nun mein Problem:
Die zu Weisung von Zellbereichen für ComboBox4
Bin seit heut Morgen aktiv beim Suchen u. testen von Füll Möglichkeiten via Archiv u.
Google leider ohne Erfolg.
Kann mir jemand helfen,
Mein Bsp. Mappe
https://www.herber.de/bbs/user/135172.xlsm
Gruß Charly

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: ComboBox Zllbereich zuweisen
13.02.2020 20:38:16
Matthias
Moin!
Kannst du bitte noch erklären, wo welche Daten stehen!? Die Werte für die CB1 habe ich noch gefunden - sind ja im Code schon drin. Modelart wird wohl Rohlstuhl, Rollator und Pfelgerollstuhl sein. Wer sind aber die Lieferanten? Da sehe ich keinen Wert.Insb. hast du ja 4 Combos aber nur 3 Werte (Farben). Da fehlt eine. Oder soll Lieferant in der Abhängigkeitsreihenfolge keine Rolle spielen?
VG
AW: VBA: ComboBox Zellbereich zuweisen
14.02.2020 00:46:02
Charly
Hallo Matthias,
habe den Fehler in der Tabelle jetzt behoben u. alle Objekte in der UF Beschriftet.
Habe auch den Code übersichtlicher gestaltet.
Ich hoffe die Zuordnung ist Verständlich.
1. ComboBox (CB_Lieferand): per AddItem in "UserForm_Initialize"
2. ComboBox (CB_Hersteller): per AddItem im Code der 1. Combobox
3. ComboBox (CB_Modelart): per AddItem im Code der 2. ComboBox
4. ComboBox (CB_Model): im Code der 3. ComboBox, Case: jeweilige Rangebereiche in Tabelle1
Aktualisierte Bsp.Mappe
https://www.herber.de/bbs/user/135189.xlsm
Gruß Charly
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
14.02.2020 22:00:50
Matthias
MOin!
Also für deine 3 Cb wäre das hier der Code. Willst du das im Code wirklich mit den festen additem lassen? Das lässt sich dann aber schwer warten. Besser wäre es, du liest die Daten direkt aus dem Blatt in die CB. Dann brauchst du das nur im Blatt ändern und der Code geht trotzdem. Evtl. wäre dann auch ein andere Blattaufbau besser - um es anzupassen. Ist aber nur eine Idee. HIer mal der Code:
Private Sub CB_Modelart_Change()
Dim bereich
' 3. Gruppe, hier wird die Untergruppe Model Ausgewählt
Me.CB_Model.Clear
With Worksheets("Tabelle1")
Select Case Me.CB_Modelart
Case "B&B Rollartor"
bereich = Range("B5:B19")
Case "B&B Rollstuhl"
bereich = .Range("B22:B35")
'Zellbereich "Tabelle1!B22:B35"
Case "B&B Pflegerollstuhl"
bereich = .Range("B22:B35")
'Zellbereich "Tabelle1!B38:B47"
Case "Inv. Rollartor"
bereich = .Range("B22:B35")
'Zellbereich "Tabelle1!C5:C19"
Case "Inv. Rollstuhl"
bereich = .Range("B22:B35")
'Zellbereich "Tabelle1!C22:C35"
Case "Inv. Pflegerollstuhl"
bereich = .Range("B22:B35")
'Zellbereich "Tabelle1!C38:C47"
Case "SM Rollartor"
bereich = .Range("D5:D19")
'Zellbereich "Tabelle1!D5:D19"
Case "SM Rollstuhl"
bereich = .Range("D22:D35")
'Zellbereich "Tabelle1!D22:D35"
Case "SM Pflegerollstuhl"
bereich = .Range("D38:D47")
'Zellbereich "Tabelle1!D38:D47"
'Case ...
End Select
End With
If Not IsEmpty(bereich) Then Me.CB_Model.List = Application.Transpose(bereich)
End Sub

VG
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
15.02.2020 00:33:54
Charly
Hallo Matthias,
Danke für deine Rückmeldung u. der Passenden Lösung, jetzt Funktioniert es.
Erst mal belasse Ich es so, da die Lieferanten immer Ihren festen Herstellerpool haben.
Sollte sich daran was ändern so kann Ich das dann immer noch tun.
Diese Art alles je Spalte zu Schreiben hatte Ich vorher schon ohne die ComboBoxen zu Verschachteln. Sondern jede CB für sich mit SourceRow-Eigenschaft, da war die Handhabung nicht optimal da Ich erst mal überlegen musste was zu wem gehört.
Danke nochmal!!!
Gruß Charly
AW: VBA: ComboBox Zellbereich zuweisen
15.02.2020 09:26:07
Charly
Morgen Matthias,
Willst du das im Code wirklich mit den festen additem lassen? Das lässt sich dann aber schwer warten. Besser wäre es, du liest die Daten direkt aus dem Blatt in die CB. Dann brauchst du das nur im Blatt ändern und der Code geht trotzdem. Evtl. wäre dann auch ein andere Blattaufbau besser - um es anzupassen. Ist aber nur eine Idee.
Werde die Tabelle wohl gleich Umbauen da Ich feststellen musste, dass ich die Größe der verschiedenen Model unterschätzt habe. Zumal Ich hierbei noch eine Kleinigkeit berücksichtigen muss eine weitere Untergruppe der Modelle. Statt vorher 4 sind es nun 5 CB´s. Code hierfür ist bereits geschrieben
Könntest du den Code nochmals Umzuschreiben/Abändern?
Statt die jeweiligen Bereiche zu nutzen, würde Ich stattdessen die ganze Spalte in Tabelle „Strehlow“ nutzen. Wie du bereits Angemerkt hasttest.
Hier ist meine aktualisierte Mappe:
https://www.herber.de/bbs/user/135209.xlsm
Gruß Charly
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
15.02.2020 11:21:17
Matthias
Moin!
Kleine Anmerkung zur neuen Tabelle. Die Zeile Model irritiert ein wenig. Sie enspricht ja keiner CB. Und kleine Rechtschreibfehler. Rollator nur mit R am Ende und Anfang. :-) Lieferant nur mit t und beim Hersteller hast du dich verhaspelt. Zum Teil hast du das konsequent auch im Code und der UF genutzt. :-) Aber das nur am Rande.
Hier wieder der Code für deine CB Bauform. Nicht wundern, der Code ist wirklich nur so kurz. Falls dein Aufbau auch für andere Lieferanten gleich bleibt, kannst du die rechts an die Tabelle anfügen und das wird auch mit bedient. Gleicher Aufbau heißt, dass der Lieferant 18 Spalten umfasst, Hersteller 6 usw.. Also so wie bisher. Ausgehend von deiner Auswahl in den CBs davor, wird die entsprechende Spalte errechnet (deshalb gleicher Aufbau) und dann dort alle Wert in die letzte CB übertragen. Einfach mal testen.
Private Sub CB_Bauform_Change()
' 4. Gruppe, hier wird die Untergruppe Model Ausgewählt
Dim zeile As Long, spalte As Long
Me.CB_Model.Clear
If Me.CB_Bauform.ListIndex = -1 Then Exit Sub
spalte = 2 + Me.CB_Lieferand.ListIndex * 18 + Me.CB_Hersteller.ListIndex * 6 + Me. _
CB_Modelart.ListIndex * 2 + Me.CB_Bauform.ListIndex * 1
With Worksheets("Strehlow")
zeile = .Cells(.Rows.Count, spalte).End(xlUp).Row
Me.CB_Model.List = Application.Transpose(.Range(.Cells(6, spalte), .Cells(zeile, spalte)))
End With
End Sub

VG
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
16.02.2020 00:20:11
Charly
Hallo Matthias,
Danke für die Rückmeldung u. es Funktioniert Super :-)
Sorry für die Flüchtigkeit`s Fehler, bin im Nachtdienst u. nebenbei Erstelle Ich Excel Datein mit Makros.
Beim Testen viel mir auf das Ich mindestens zwei Einträge in den Spalten haben "muss" sonst kommt es zu einer Fehlermeldung.
Laufzeitfehler "381"
Eigenschaft List konnte nicht gesetzt werden. Index des Eigenschaftsfeldes ungültig.

Aber ansonsten klappt alles Super.
Gruß Charly
AW: VBA: ComboBox Zellbereich zuweisen
16.02.2020 14:35:00
Matthias
Moin!
Upps. Das hatte ich nicht bedacht, dass auch mal nix stehen kann. Dann hier der ergänzte Code. Jetzt kan auch die Liste für das Model leer sein oder nur einen Wert enthalten.
Private Sub CB_Bauform_Change()
' 4. Gruppe, hier wird die Untergruppe Model Ausgewählt
Dim zeile As Long, spalte As Long
Me.CB_Model.Clear
If Me.CB_Bauform.ListIndex = -1 Then Exit Sub
spalte = 2 + Me.CB_Lieferand.ListIndex * 18 + Me.CB_Hersteller.ListIndex * 6 + Me. _
CB_Modelart.ListIndex * 2 + Me.CB_Bauform.ListIndex * 1
With Worksheets("Strehlow")
zeile = .Cells(.Rows.Count, spalte).End(xlUp).Row
If zeile = 5 Then Exit Sub 'nix eingetragen
If zeile = 6 Then
Me.CB_Model.AddItem .Cells(zeile, spalte) 'nur ein Wert
Else
Me.CB_Model.List = Application.Transpose(.Range(.Cells(6, spalte), .Cells(zeile, spalte) _
))
End If
End With
End Sub

VG
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
16.02.2020 22:51:52
Charly
Hallo Matthias,
Danke für die Rückmeldung u. super jetzt Funktioniert es Tadellos. :-)
Könntest du mir eventuell bei einer kleinen Sache noch weiter Helfen.
In der CB.Model werden ja die Inhalte der Spalten geladen,
ist es möglich den letzen Eintrag Farblich hervor zu heben?
Habe nämlich in jeder Spalte als letzen Eintrag den Text (k. w. Modelle) zu stehen.
Diesen würde Ich gern in der CB Farblich Darstellen somit der Anwender weiß das es (keine weiteren Modelle) gibt.
Ich bin die Sehr Dankbar dass du mir bei meinem Anliegen geholfen hast.
Gruß Charly
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
16.02.2020 23:21:16
Charly
Sorry hab die Art u. Weise nicht benannt.
Für das gesamte Tabellenblatt nutze ich die Bebingte Formatierung.
Überwache alle Zellen mit dem Inhalt "k. w. Modelle" Formatiert mit nur Schriftfarbe "Rot".
Hoffe in der Art geht's auch mit der CB_Model.
Grüß Charly
AW: VBA: ComboBox Zellbereich zuweisen
17.02.2020 09:58:49
Charly
Morgen Matthias,
oh man, ok habe Festellen müssen das die Tabelle mit zunehmenden Information gewaltig ausschaut.
Meine damit das die Tabelle sehr lang wird.
Bis Dato ist der Bereich eines Lieferanten 44 Spalten lang,
somit komme Ich bei 4 Lieferanten 176 Spalten u. es kommen noch weitere Lieferanten dazu.
Könntest du deinen letzten Code so änder damit Ich die Lieferant von separaten Tabellen aus zuweisen kann damit es Übersichtlich bleibt.
Ich wehre dir sehr Dankbar dafür.
Grüß Charly
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
17.02.2020 22:14:00
Matthias
Moin!
Also das mit der bunten Zeile in einer CB geht nicht.
Das andere schaue ich morgen mal. Wenn möglich, stell mal bitte eine Mappe für 2 Lieferanten ein. Dann habe ich den korrekten Aufbau. DAbei mal angeben, auf welcher Seite die UF starten soll.
VG
AW: VBA: ComboBox Zellbereich zuweisen
18.02.2020 15:19:33
Charly
Hallo Matthias,
ok das mit der Farbdarstellung in der ComboBox habe Ich mir schon gedacht.
Da bleibt mir wohl nicht´s anderes übrig als eine weitere CB in die UF zu Packen.
So zu sagen CB_Model_a = Kassenleistung, CB_Model_b = Privatleistung u.
dazu dann Weiter Spalten
Hier meine bis Dato aktuelle Mappe mit drei Tabellen.
Start-Tabelle für UF ist "Strehlow".
https://www.herber.de/bbs/user/135272.xlsm
Frage:
Ich Schreibe ja untereinander im Moment sind Bsp. In einer Spalte bis zu 14 Einträge.
Kann man in der gleichen Spalte mit etwas Abstand weiterschreiben?
- Model-a (Kassenleistung), geringe Model Auswahl
- Model-b (Privatleistung), größere Model Auswahl
Gruß Charly
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
18.02.2020 21:32:41
Matthias
Moin!
Komme heute nicht mehr zum Umschreiben. Wird erst morgen. Falls da der Thread schon im Archiv ist (ist nur 7 Tage aktiv) bitte einen neuen erstellen und auf diesen hier verzeichten.
Das mit den unterschiedlichen Werten sollte auch gehen. Kannst da an Stelle der Leerzeile als Trenner auch ein xxxxx etc. eintragen.
Mal als Frage zu Tabelle. Um es so flexibel wie möglich zu haben, kann man in der Tabelle an statt ROllstuhl auch "RO (SM)" (je nach Hersteller natürlich angepasst) eintragen? Damit könnte man alles aus der Tabelle übernehmen und deinen 100 Zeile select case für die vorletzte CB würden entfallen. Wenn noch was hinzukommt, wird es ja noch mehr. Würde das sonst für die CB direkt aus der Tabelle einlesen. Da unterscheiden sich derzeit aber noch die Begriffe. Und letzte Frage. Ist für die KAssen- bzw. Privatleistungen schon eine CB da? Die fehlt noch oder? Da könnte man an Stelle einer CB auch zwei LIstboxen einfügen. Links für Kassen und rechts für Privatleistungen. Wenn du ein Model auswählst, werden dann die beiden LB befüllt. Dann sind gleich beide angezeigt. Weiß abe rnicht, für was du es brauchst und wie es angezeigt werden soll.
Kannst dir ja mal bis morgen Gedanken machen. Geht morgen dann weiter.
VG
Anzeige
AW: VBA: ComboBox Zellbereich zuweisen
19.02.2020 16:06:29
Charly
Hallo Matthias,
ich habe die Tabelle wie folgt neu Aufgebaut.
Die Unterkategorie nach Model-Art ist jetzt die Leistungsart mit zwei Spalten (Kassenleistung u. Privatleistung).
Unter den jeweiligen Leistungen sind nun die die Model-Bauarten untereinander mit den dazugehörigen Modellen.
Das mit den unterschiedlichen Werten sollte auch gehen. Kannst da an Stelle der Leerzeile als Trenner auch ein xxxxx etc. eintragen.
Die Modelle werden mit Trenner getrennt, ebenso habe Ich die Bezeichnung „Rollator“ in RO (SM) umbenannt ebenso bei den zwei anderen. Ich Hab die UF so gelassen mit 5 CB´s.
Würde das sonst für die CB direkt aus der Tabelle einlesen.
Was meinst du damit, werden die Daten dann nicht mehr Errechnet?
Und letzte Frage. Ist für die Kassen- bzw. Privatleistungen schon eine CB da?
Nein, diese ComboBox-Verschachtelung soll andere CB´s ersetzen.
Bei denen Lese Ich die Daten jeweils einzeln über SourceRow ein oh. die Zugehörigkeit.
Daher Ich hatte Problem die Modelle von den jeweiligen Herstellern u. Lieferanten zu Unterscheiden.
Da könnte man an Stelle einer CB auch zwei Listboxen einfügen.
Links für Kassen und rechts für Privatleistungen.

Ich würde die CB´s bevorzugen, da Sie weniger Platz brauchen.
Ich habe eine Datenbank für Hilfsmittel vor einiger Zeit erstellt, diese ComboBoxen sind dafür da die Modelle der der jeweiligen Herstelle auszuwählen.
Hier meine aktualisierte Mappe
https://www.herber.de/bbs/user/135289.xlsm
Gruß Charly
AW: VBA: ComboBox Zellbereich zuweisen
19.02.2020 20:39:00
Matthias
Moin!
Also hier mal deine Datei zurück. Die Eintragungen unten sollen jetzt hinhauen.
https://www.herber.de/bbs/user/135296.xlsm
Unter deinem Startbutton ist jetzt auch noch eine UF von mir. Da sind im Code die Werte nicht vorgegeben, sondern werden aus dem Blatt ausgelesen. Dadurch ist man m.E. flexibler. Wenn du jetzt im Blatt was änderst (Hersteller hinzu usw. ) brauchst du das nur im Blatt machen und die UF übernimmt es. Der Aufbau sollte allerdings identisch sein. Die Spalte wird auch wieder berechnet. Kannst es dir ja mal anschauen.
VG

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige