Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Combo mit Werten aus untersch. Spalten füllen
19.05.2009 13:03:37
Best4you
Hallo,
ich habe folgendes Sub

Private Sub UserForm_Initialize()
lbl_date.Caption = Format(Date, "dddd, dd.mm.yyyy")
Sheets("data").Activate
Me.combo_grund.RowSource = "F2:F5"
'Liste bilden
Me.combo_maAuswaehlen.ColumnCount = 3 ' übernimmt drei Spalten
Me.combo_maAuswaehlen.ColumnHeads = True ' übernimmt die Überschrift
Me.combo_maAuswaehlen.ColumnWidths = "2cm;2cm;2cm" ' bestimmt die Spaltenbreite
Me.combo_maAuswaehlen.RowSource = "mitarbeiter!b2:C100" And "mitarbeiter!q2:q100"
End Sub


combo_maAuswaehlen soll drei Spalten enthalten. Spalte 1 im Combo ist in der Tabelle Spalte B. Spalte 2 im Combo ist die Spalte C in der Tabelle. Die dritte Spalte ist die Spalte Q in der Tabelle. Wie kann ich Spalte B, C, Q im Combo anzeigen. Meine obiger bescheidener Versuch funktioniert nicht.
Mit diesem Combo habe ich noch zwei weitere Probleme: Die Tabelle wächst beständig ggf. an. D.h. die Leerzeilen möchte ich natürlich nicht anzeigen. Wie kann ich das hinbekommen?
In der Mitarbeiterliste eine Spalte Austritt enthalten. Natürlich sollen nur noch die derzeit angestellten Mitarbeiter in der Combo-Liste anzeigen lassen. Wie kann ich diese If-Then-Abfrage gestalten?
Besten Dank für die Tipps und Ideen. Stehe heute trotz sonnigem Sommerwetter auf dem Schlauch. ;-)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
20.05.2009 12:53:25
fcs
Hallo Best4you,
das 1. Problem kannst du lösen, indem du für die Combobox die Breite der Spalten die nicht angezeigt werden sollen auf 0 setzt.

Private Sub UserForm_Initialize()
lbl_date.Caption = Format(Date, "dddd, dd.mm.yyyy")
Sheets("data").Activate
Me.combo_grund.RowSource = "F2:F5"
'Liste bilden
Me.combo_maAuswaehlen.ColumnCount = 16 ' übernimmt 16 Spalten
Me.combo_maAuswaehlen.ColumnHeads = True ' übernimmt die Überschrift
Me.combo_maAuswaehlen.ColumnWidths = "2cm;2cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;" _
& "0cm;0cm;0cm;0cm;0cm;0cm;2cm" ' bestimmt die Spaltenbreite
Me.combo_maAuswaehlen.RowSource = "mitarbeiter!B2:Q100"
End Sub


Für's 2. Problem muss die Auswahlliste anders mit Daten gefüllt werden. Beispiel:


Private Sub UserForm_Initialize()
Dim wksMA As Worksheet, Zeile As Long, SpalteAus As Long
Set wksMA = Worksheets("mitarbeiter")
lbl_date.Caption = Format(Date, "dddd, dd.mm.yyyy")
Sheets("data").Activate
Me.combo_grund.RowSource = "F2:F5"
'Liste bilden
With Me.combo_maAuswaehlen
SpalteAus = 7 'Spalte E, Spalte mit Ausgeschieden-Info
.ColumnCount = 3 '
.RowSource = ""
'.ColumnHeads = True ' übernimmt die Überschrift - funktioniert hier nicht
.ColumnWidths = "2cm;2cm;2cm" ' bestimmt die Spaltenbreite
.Clear
For Zeile = 2 To wksMA.Cells(wksMA.Rows.Count, 2).End(xlUp).Row
'Prüfen, ob Ausgeschieden verschieden von "Ja"
If wksMA.Cells(Zeile, SpalteAus).Value  "Ja" Then
.AddItem wksMA.Cells(Zeile, 2).Value 'Wert Spalte B
.List(.ListCount - 1, 1) = wksMA.Cells(Zeile, 3) 'Wert Spalte C
.List(.ListCount - 1, 2) = wksMA.Cells(Zeile, 17) 'Wert Spalte Q
End If
Next
End With
End Sub


Gruß
Franz

Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
23.05.2009 15:55:08
Best4you
Hi Franz,
super! Teil 1 habe ich bereits ausprobiert und funktioniert. Besten Dank für deine Hilfe und Vorschlag.
Teil 2 werde ich später ausprobieren.
Ich habe noch eine Frage:

ActiveCell.Offset(belegteZeilen, 0).Select
ActiveCell.Value = combo_maAuswaehlen


So, schreibe ich die Daten aus der Combo in die Tabelle. Kann ich dabei noch genau spezifizieren, welcher Datenteil gespeichert wird. Meine Idee:


ActiveCell.Offset(belegteZeilen, 0).Select
ActiveCell.Value = combo_maAuswaehlen -> Nachname
ActiveCell.Offset(belegteZeilen, 0).Select
ActiveCell.Value = combo_maAuswaehlen -> Vorname
ActiveCell.Offset(belegteZeilen, 0).Select
ActiveCell.Value = combo_maAuswaehlen -> Spalte Q


Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
25.05.2009 12:38:08
fcs
Hallo Best4you,
um die Daten der selektierten Zeile einer ComboBox in eine Tabelle zurückzuschreiben muss du die List-Eigenschaft der Combobox auswerten.
Gruß
Franz
Beispiel:

Dim Zelle As Range
With combo_maAuswaehlen
If .ListIndex  -1 Then
Set Zelle = ActiveCell.Offset(belegteZeilen, 0)
Zelle.Value = .List(.ListIndex, 0) '-> Nachname
Zelle.Offset(0, 1).Value = .List(.ListIndex, 1) '-> Vorname
Zelle.Offset(0, 2).Value = .List(.ListIndex, 2) '-> Spalte Q
Else
MsgBox "In Kombobox wurden noch keine Daten gewählt!"
End If
End With


Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
24.05.2009 10:35:48
Best4you
Hi Franz,
nun habe ich deinen zweiten Tipp ausprobiert. Hier mein Code:

Private Sub UserForm_Initialize()
Dim wksMA As Worksheet, Zeile As Long, SpalteAus As Long
Set wksMA = Worksheets("mitarbeiter")
lbl_date.Caption = Format(Date, "dddd, dd.mm.yyyy")
lbl_user.Caption = Environ("Username")
Sheets("data").Activate
Me.combo_grund.RowSource = "F2:F5"
Me.combo_standort.RowSource = "A2:A5"
Me.combo_vertrag.RowSource = "C2:C6"
Me.combo_arbeitszeit.RowSource = "D2:D5"
Me.combo_funktion.RowSource = "B2:B7"
'Liste bilden
With Me.combo_MaAuswaehlen
SpalteAus = 23 'Spalte W, Spalte mit Ausgeschieden-Info
.ColumnCount = 20 '
.RowSource = ""
'.ColumnHeads = True ' übernimmt die Überschrift - funktioniert hier nicht
.ColumnWidths = "2cm;2cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;" _
& "0cm;0cm;0cm;0cm;0cm;2cm;2cm" ' bestimmt die Spaltenbreite
.Clear
For Zeile = 2 To wksMA.Cells(wksMA.Rows.Count, 2).End(xlUp).Row
'Prüfen, ob Ausgeschieden in Spalte W ohne Datum = 0
If wksMA.Cells(Zeile, SpalteAus).Value = 0 Then
.AddItem wksMA.Cells(Zeile, 2).Value 'Wert Spalte B
.List(.ListCount - 1, 1) = wksMA.Cells(Zeile, 3) 'Wert Spalte C
.List(.ListCount - 1, 2) = wksMA.Cells(Zeile, 15) 'Wert Spalte P
.List(.ListCount - 1, 3) = wksMA.Cells(Zeile, 16) 'Wert Spalte Q
End If
Next
End With
End Sub


Jedoch werden die Werte aus Spalte P und Q nicht angezeigt. Woran liegts?
Sonnige Sonntagsgrüße aus Berlin

Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
25.05.2009 08:06:00
Hajo_Zi
Hallo Nick,
das ist auch klar ab spalte 3 ist eine Spaltenbreite 0, da kannst Du nichts sehen.

AW: Combo mit Werten aus untersch. Spalten füllen
25.05.2009 12:26:20
fcs
Hallo Best4you,
wenn du schon meinen 2. Vorschlag verwendest, dann bitte auch vollständig und nicht als Mischung aus 1. und 2.
2 Zeillen muss du anpassen, dann sollte dein Code für die Combobox funktionieren.
Gruß
Franz

Private Sub UserForm_Initialize()
Dim wksMA As Worksheet, Zeile As Long, SpalteAus As Long
Set wksMA = Worksheets("mitarbeiter")
lbl_date.Caption = Format(Date, "dddd, dd.mm.yyyy")
lbl_user.Caption = Environ("Username")
Sheets("data").Activate
Me.combo_grund.RowSource = "F2:F5"
Me.combo_standort.RowSource = "A2:A5"
Me.combo_vertrag.RowSource = "C2:C6"
Me.combo_arbeitszeit.RowSource = "D2:D5"
Me.combo_funktion.RowSource = "B2:B7"
'Liste bilden
With Me.combo_MaAuswaehlen
SpalteAus = 23 'Spalte W, Spalte mit Ausgeschieden-Info
.ColumnCount = 3 '   #### geändert fcs
.RowSource = ""
'.ColumnHeads = True ' übernimmt die Überschrift - funktioniert hier nicht
.ColumnWidths = "2cm;2cm;2cm" ' bestimmt die Spaltenbreite ### geändert fcs
.Clear
For Zeile = 2 To wksMA.Cells(wksMA.Rows.Count, 2).End(xlUp).Row
'Prüfen, ob Ausgeschieden in Spalte W ohne Datum = 0
If wksMA.Cells(Zeile, SpalteAus).Value = 0 Then
.AddItem wksMA.Cells(Zeile, 2).Value 'Wert Spalte B
.List(.ListCount - 1, 1) = wksMA.Cells(Zeile, 3) 'Wert Spalte C
.List(.ListCount - 1, 2) = wksMA.Cells(Zeile, 15) 'Wert Spalte P
.List(.ListCount - 1, 3) = wksMA.Cells(Zeile, 16) 'Wert Spalte Q
End If
Next
End With
End Sub


Anzeige
AW: Combo mit Werten aus untersch. Spalten füllen
27.05.2009 06:38:08
Best4you
Hi Franz,
besten Dank. Es hat funktioniert.
Schöne Woche.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige