Frage von Biggy2016, 7

Excel VBA Listenfeld?

Hallöle,

ich schon wieder. ;-)

Ich habe ein Listenfeld erstellt, in dem die Daten aus der Spalte A des Tabellenblattes tbl_X angezeigt werden.

Nun möchte ich die Auswahl des Anwenders gerne dahingehend verarbeiten, dass ich die Auswahl übernehme, aber in einem anderen Tabellenblatt anzeige.

Z.B. Der Anwender wählt über das Listenfeld den Wert 4711 (aus Spalte A Tabellenblatt tbl_ X) aus. Ich übernehme den Wert 4711 (nach OK), aktiviere das Tabellenblatt tbl_Y und zeige ihm diesen dort in Spalte A an.

Habt Ihr eine Lösung für mich?

Hier meine Programmierung: ** Private Sub UserForm_Initialize()

Dim lngZeileMax As Long

Dim wksBlatt As Worksheet

Set wksBlatt = tbl_A

lngZeileMax = wksBlatt.UsedRange.Rows.Count

With Me.Lst_Vertrieb

.ColumnCount = 1

.ColumnHeads = True

.ColumnWidths = "70"

.RowSource = _ "=" & wksBlatt.Name & "!A2:A2" & _ lngZeileMax ( 'Bereich aus Tabelle verknüpfen)

.BackColor = RGB(165, 165, 165)

.Font.Size = 10

.Font.Bold = False

.ListIndex = 0 ( 'Ersten Eintrag vor einstellen)

End With

End Sub

Private Sub cmd_OK_Click()

If Me.Lst_Vertrieb.ListIndex <> -1 Then

???????????????????????????????????? (<- hier habe ich Schwierigkeiten)

Else

MsgBox "Bitte eine Auswahl treffen", vbInformation

End If

End Sub

Antwort
von PWolff, 7

Willst du den Wert in eine bestimmte Zelle eintragen oder alle Werte in tbl_Y!A:A stehen haben und den gewählten Wert markieren (z. B. fett)?

Eintragen des Wertes:

tbl_Y.Cells(Zeilennr,Spaltennr).Value = Me.Lst_Vertrieb.List(Me.Lst_Vertrieb.ListIndex)

Sonst müsstest du in tbl_Y die Spalte A durchgehen und

tblY.Cells(Zeilennr,Spaltennr).Interior.Font.Bold = (tblY.Cells(Zeilennr,Spaltennr).Value = Me.Lst_Vertrieb.List(Me.Lst_Vertrieb.ListIndex)

Wozu der Umweg über das Makro?

Du kannst auch eine Zelle markieren und die Gültigkeit der Daten auf die Spalte A eingrenzen:

Daten (irgendwo im Ribbon - das alte Menü ist m. E. übersichtlicher) -> Gültigkeitsprüfung ->

Zulassen:   Liste

Quelle:   =A:A

Dann bekommt diese Zelle automatisch einen Button zum Ausklappen der Liste, sobald man sie markiert, und man kann jeden Wert aus Spalte A asuwählen (aber keinen anderen).

In tbl_Y kannst du dich dann mit einer Zelle auf diese so eingeschränkte Zelle beziehen.

Kommentar von Biggy2016 ,

Hallo,

vielen Dank für Deine Hilfe. Leider funktioniert die zweite Variante nicht.

Vielleicht noch einmal mein Anliegen etwas konkreter.

Das Listefeld zieht die Auswahlfelder aus der Spalte A der tbl_X. Diese Tabelle ist eine wüste Ansammlung diverser Daten.

Wenn der Anwender eine Auswahl getroffen hat (z.B. 4711) möchte ich, dass ihm diese Auswahl in tbl_Y angezeigt wird. In tbl_Y sind die viele Daten aus tbl_X nur "hübsch gemacht". Die Auswahl "4711" (Datenfeld in Spalte A) sollte dann farblich unterlegt sein. 

Hast Du / habt Ihre eine Idee?

Kommentar von PWolff ,

Bei Feld mit Dateneinschränkung:

Bedingte Formatierung mit Formel

=(dieseZelle = Bezugszelle)

Aus dem Makro heraus:

For ZeileNr = ZeileNrStart To ZeileNrEnde
With tbl_Y.Cells(ZeileNr, SpalteNr)
If .Value = Vergleichswert Then
.Interior.ColorIndex = [gewünschter Farbindex]
Else
.Interior.ColorIndex = xlNone
End If
End With 'tbl_Y.Cells(ZeileNr, SpalteNr)
Next ZeileNr '= ZeileNrStart To ZeileNrEnde

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten