Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: ComboBox mit zwei Spalten

VBA: ComboBox mit zwei Spalten
06.03.2020 00:31:16
Charly
Hallo,
wer könnte mir Helfen in dem Code vom "CB_Bereich_ID_Change" etwas zu Intrigieren.
Hierzu möchte Ich in der CB_ID nicht nur die ID stehen haben sondern auch den dazugehörigen Namen als "Auswahlhilfe".

Ist sowas möglich od. muss man für mein Vorhaben den Code Komplett neu Aufbauen?
Beschreibung des Codes:
Die CB_Bereich_ID ist eine Vorauswahl, in dieser wird eine Gruppe gewählt.
Die Gruppe dient dazu einen Beiche einzugrenzen, in dem falle sind es "Wohnbereiche" u. darüber hinaus werden hierfür auch die dazugehörigen ID´s Bereitgestellt.
Die CB_ID (ID) ist eine feste Konstante mit direkten Bezug zur Vorauswahl (CB_Bereich_ID).
Sie dient dazu sowohl beim Suchen als auch beim Schreiben in die Tabelle immer die Richtige Zeile anzusprechen.
Wie man im Code sehen kann sind zwei Tabellen Angegeben hierzu gehören:
- Mappe1 "HM2030_ori.xlsm" mit Tabellenblatt "Werte", hier werden die Bereiche, ID´s u. Namen je in einer Spalte aufgelistet.
- Mappe2 "HM2030_RO.xlsm" mit Tabellenblatt "RO", hier werden die Bewohner bezogenden Informationen gespeichert.
All das Dient zur Feststellung (Dokumentation) welcher Bewohner ein oder mehrere Hilfsmitteln besitzt, die wiederum gewartet werden müssen.
Danke im Vorfeld für die Hilfe.

Gruß Charly
Option Explicit
Private Sub CB_Bereich_ID_Change()
Dim i As Long
With Workbooks("HM2030_ori.xlsm").Worksheets("Werte")
Me.CB_ID.Clear
Select Case Me.CB_Bereich_ID
Case "WB 1"
Application.ActiveWindow.ScrollRow = 5
For i = 2 To 40
If WorksheetFunction.CountIf(Worksheets("RO").Columns(3), .Cells(i, 6)) = 0  _
_
Then
Me.CB_ID.AddItem .Cells(i, 2)
End If
Next i
Case "WB 2"
Application.ActiveWindow.ScrollRow = 86
For i = 41 To 73
If WorksheetFunction.CountIf(Worksheets("RO").Columns(3), .Cells(i, 87)) =  _
0 _
Then
Me.CB_ID.AddItem .Cells(i, 2)
End If
Next i
Case "WB 3"
Application.ActiveWindow.ScrollRow = 155
For i = 74 To 112
If WorksheetFunction.CountIf(Worksheets("RO").Columns(3), .Cells(i, 156)) =  _
0 _
Then
Me.CB_ID.AddItem .Cells(i, 2)
End If
Next i
Case "Haus"
Application.ActiveWindow.ScrollRow = 236
For i = 116 To 130
If WorksheetFunction.CountIf(Worksheets("RO").Columns(3), .Cells(i, 237)) =  _
0 _
Then
Me.CB_ID.AddItem .Cells(i, 2)
End If
Next i
Case Else
End Select
End With
End Sub

Private Sub UserForm_Activate()
' Hier wird die Gruppe Wohnbereiche definiert
CB_Bereich_ID.List = Array("WB 1", "WB 2", "WB 3", "Haus")
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: ComboBox mit zwei Spalten
06.03.2020 01:41:59
Charly
Ergänzung:
Spalten Angabe in Tab. "Werte"
Falls mein Anliegen möglich ist habe Ich nun für die ComboBox "CB_ID" zwei neue Spalten erstellt (Nebeneinander).
Bereich "WB 1"
ID: Y2:Y40 Name: Z2:Z40
Bereich "WB 2"
ID: Y41:Y73 Name: Z41:Z73
Bereich "WB 3"
ID: Y74:Y112 Name: Z74:Z112
Bereich "Haus"
ID: Y113:Y227 Name: Z113:Z227
Gruß Charly
Anzeige
AW: VBA: ComboBox mit zwei Spalten
06.03.2020 07:44:33
Oberschlumpf
Hi Charly,
zuerst musst du für deine ComboBox CB_ID die Eigenschaft ColumnCount auf 2 setzen, weil du ja in der ComboBox 2 Spalten haben willst.
und nun hier ein Bsp nur für die erste Zuweisung in deinem Code:

If WorksheetFunction.CountIf(Worksheets("RO").Columns(3), .Cells(i, 6)) = 0 Then
Me.CB_ID.AddItem
Me.CB_ID.List(Me.CB_ID.ListCount - 1, 0) = .Cells(i, 2)
Me.CB_ID.List(Me.CB_ID.ListCount - 1, 1) = .Cells(i, XXX)
End If

Anstelle von XXX musst du die Spaltennummer eintragen, in der dein gewünschter Name zur ID steht.
Wie erwähnt, mein Code-Schnipsel gilt nur für Spalte 6 (siehe dein Code If.....Cells(i, 6) ).
Für deinen restlichen Code musst du das nur anpassen.
Insgesamt würde ich deinen Code so nicht verwenden, sondern stark komprimieren. Aber das war ja nicht deine Frage.
Solltest du nun als Folgefrage darum bitten, den Code zu komprimieren, empfehle ich dir, deswegen einen neuen Beitrag zu erstellen, in dem du auch eine Bsp-Datei per Upload zeigst, die deinen jetzigen Code enthält.
Konnte ich denn mit meiner Antwort bzgl deiner 2-Spalten-ComboBox-Frage helfen?
Ciao
Thorsten
Anzeige
AW: VBA: ComboBox mit zwei Spalten
06.03.2020 13:01:44
Charly
Hallo Thorsten,
Danke für deine Antwort, konnte nun dein Bsp. testen. Es Funktioniert Tadellos.

Um auf deine Komprimierung zurück zu kommen, habe Ich diesbezüglich einen Neuen Beitrag erstellt.
Danke für dir Hilfe.
Gruß Charly
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige