Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1744to1748
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
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

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
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige