ComboBox
- ComboBox von sigrid vom 29.09.2020 10:42:37

Betrifft: ComboBox
von: sigrid
Geschrieben am: 29.09.2020 10:42:37
Guten Morgen zusammen,
ich habe folgendes Makro für die ComboBox, funktioniert einwandfrei.
Jetzt möchte ich aber das die ComboBox 2 Spalten auswählt:
ActiveSheet.ComboBox1.ListFillRange = "Muster!I4:J20"
aber bis zur letzten belgten Zelle in Spalte I (ab Zelle4)
2. Frage:
Geht das, das man den Wert der 2.Spalte in D6 schreibt ???
'-- hier das Orginal Makro ----------------------------
Private Sub ComboBox1_DropButtonClick()
If Range("A1") = 1 Then
ActiveSheet.ComboBox1.ListFillRange = "Muster!I4:I20"
ActiveSheet.Range("D5") = ActiveSheet.ComboBox1 'ausgewählte in D5 setzen
ElseIf Range("A1") = 2 Then
ActiveSheet.ComboBox1.ListFillRange = "Muster!M4:M20"
ActiveSheet.Range("D5") = ActiveSheet.ComboBox1
Else
ActiveSheet.ComboBox1.ListFillRange = ""
End If
End Sub
gruß sigrid

Betrifft: AW: ComboBox
von: Nepumuk
Geschrieben am: 29.09.2020 11:31:43
Hallo sigrid,
teste mal:
Private Sub ComboBox1_DropButtonClick()
If Range("A1").Value = 1 Then
ComboBox1.ColumnCount = 2
With Worksheets("Muster")
ComboBox1.ListFillRange = .Range(.Cells(4, 9), _
.Cells(.Rows.Count, 10).End(xlUp)).Resize(, 2).Address(External:=True)
End With
Range("D5").Value = ComboBox1.Text 'ausgewählte in D5 setzen
ElseIf Range("A1") = 2 Then
ComboBox1.ColumnCount = 1
ComboBox1.ListFillRange = "Muster!M4:M20"
Range("D5").Value = ComboBox1.Text
Else
ComboBox1.ListFillRange = ""
End If
End Sub
Gruß
Nepumuk

Betrifft: AW: ComboBox
von: Nepumuk
Geschrieben am: 29.09.2020 11:46:04
Ooooooops,
die Ausgabe des Wertes aus Spalte 2 hab ich vergessen.
Private Sub ComboBox1_DropButtonClick()
If Range("A1").Value = 1 Then
With Worksheets("Muster")
ComboBox1.ListFillRange = .Range(.Cells(4, 9), _
.Cells(.Rows.Count, 9).End(xlUp)).Resize(, 2).Address(External:=True)
End With
With ComboBox1
.ColumnCount = 2
.TextColumn = 2
.BoundColumn = 2
Range("D5").Value = .Text 'ausgewählte in D5 setzen
End With
ElseIf Range("A1") = 2 Then
With ComboBox1
.ListFillRange = "Muster!M4:M20"
.ColumnCount = 1
.TextColumn = -1
.BoundColumn = 1
Range("D5").Value = .Text
End With
Else
ComboBox1.ListFillRange = ""
End If
End Sub
Gruß
Nepumuk

Betrifft: Soweit sehr gut aber der Wert in...
von: sigrid
Geschrieben am: 29.09.2020 12:08:52
Hallo Nepumuk,
das Makro funktioniert aber der Wert aus der 2. Spalte sollte
jetzt in E5 gesetzt werden.
gruß sigrid

Betrifft: Ich habs... Danke nochmal ! --))
von: sigrid
Geschrieben am: 29.09.2020 12:21:10
Hallo Nepumuk,
habe so reingesetzt:
With ComboBox1
.ColumnCount = 1
.TextColumn = 1
.BoundColumn = 1
Range("D5").Value = .Text 'ausgewählte in D5 setzen
End With
With ComboBox1
.ColumnCount = 2
.TextColumn = 2
.BoundColumn = 2
Range("E5").Value = .Text 'ausgewählte in E5 setzen
End With
klappt !
gruß sigrid

Betrifft: Bitte noch kleine Nachfrage...
von: sigrid
Geschrieben am: 29.09.2020 14:50:14
Hallo Nepumuk,
was mnuss ich einsetzen, damit nach dem auswählen mir die
Spalte 1 angezeigt wird ?
Private Sub ComboBox1_DropButtonClick()
If Range("A1").Value = 1 Then
With Worksheets("Feiertage")
ComboBox1.ListFillRange = .Range(.Cells(4, 9), _
.Cells(.Rows.Count, 9).End(xlUp)).Resize(, 2).Address(External:=True)
End With
With ComboBox1
.ColumnCount = 1
.TextColumn = 1
.BoundColumn = 1
ActiveSheet.Range("F5").Value = .Text 'ausgewählte in F5 setzen
End With
With ComboBox1
.ColumnCount = 2
.TextColumn = 2
.BoundColumn = 2
ActiveSheet.Range("G5").Value = .Text 'ausgewählte in G5 setzen
End With
gruß sigrid

Betrifft: AW: Bitte noch kleine Nachfrage...
von: Nepumuk
Geschrieben am: 29.09.2020 15:02:12
Hallo sigrid,
ich war so frei das Ganze noch etwas umzubauen:
Option Explicit
Private mblnNoChange As Boolean
Private Sub ComboBox1_Change()
If Not NoChange Then
With ComboBox1
If .ListFillRange <> vbNullString Then If Cells(1, 1).Value = 1 Then _
Cells(5, 4).Value = .Value Else Cells(5, 5).Value = .Value
End With
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
NoChange = True
If Target.Value = 1 Then
With Worksheets("Muster")
ComboBox1.ListFillRange = .Range(.Cells(4, 9), _
.Cells(.Rows.Count, 9).End(xlUp)).Resize(, 2).Address(External:=True)
End With
With ComboBox1
.ListIndex = -1
.ColumnWidths = "50;50"
.ColumnCount = 2
.TextColumn = 1
.BoundColumn = 2
.Text = Cells(5, 4).Value
End With
ElseIf Target.Value = 2 Then
With ComboBox1
.ListFillRange = "Muster!L4:M20"
.ListIndex = -1
.ColumnWidths = "0;50"
.ColumnCount = 2
.TextColumn = 2
.BoundColumn = 2
.Text = Cells(5, 5).Value
End With
Else
ComboBox1.ListFillRange = ""
End If
NoChange = False
End If
End Sub
Private Property Get NoChange() As Boolean
NoChange = mblnNoChange
End Property
Private Property Let NoChange(ByVal pvblnNoChange As Boolean)
mblnNoChange = pvblnNoChange
End Property
Gruß
Nepumuk

Betrifft: Danke aber...
von: sigrid
Geschrieben am: 29.09.2020 15:43:39
Hallo Nepumuk,
herzlichen Dank aber ich blicke da nicht mehr durch...
Ich wollte nur das die ComboBox nach der Auswahl immer den die 1. Spalte
anzeigt.
gruß sigrid

Betrifft: AW: Danke aber...
von: Nepumuk
Geschrieben am: 29.09.2020 15:53:31
Hallo sigrid,
bei mir (Excel 2013) hat sich die ComboBox geweigert von zweispaltig auf einspaltig umzuschalten. Zudem genügt es ja die Werte in der ComboBox zu wechseln wenn sich der Wert in Zelle A1 ändert und nicht bei jedem Klick auf die Box. Klick einfach in die Zelle A1 - F2 - Enter. Damit ist die Box initialisiert. Damit sollte es in allen Excelversionen funktionieren.
Gruß
Nepumuk

Betrifft: Danke für die Info ! -)
von: sigrid
Geschrieben am: 29.09.2020 16:07:35