Microsoft Excel

Herbers Excel/VBA-Archiv

ComboBox

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