Microsoft Excel

Herbers Excel/VBA-Archiv

AutoWordSelect nach List-Zuweisung in auslösen

Betrifft: AutoWordSelect nach List-Zuweisung in auslösen von: Martin
Geschrieben am: 28.09.2014 19:40:50

Hallo liebe Excel-Freunde,

ist es möglich in einer ComboBox die AutoWordSelect-Eigenschaft nach Zuweisung der Listeneinträge per Makro auszulösen?

Ich werte im Change-Event einer ComboBox die Eingabe aus und fülle per List-Eigenschaftdie möglichen Listeneinträge. Nur leider wird trotz AutoWordSelect = True nichts vorgeschlagen.

(Würde die List-Zuweisung vor der Eingabe erfolgen, ginge es. Nur leider kann ich die List-Zuweisung erst nach Auswertung der Eingabe vornehmen.)

Für Ideen bin ich wie immer sehr dankbar.

Viele Grüße

Martin

  

Betrifft: AW: AutoWordSelect nach List-Zuweisung in auslösen von: Martin
Geschrieben am: 29.09.2014 01:42:51

Hallo,

mir ist für meinen Zweck eine passende Lösung eingefallen. Nach der List-Zuweisung führe ich folgendes Makro aus:

Sub AutoSelect()
    Dim iSelStart As Integer
    With cboSearchString
        iSelStart = .SelStart
        .Value = .List(0)
        .SelStart = iSelStart
        .SelLength = Len(.Text) - iSelStart
    End With
End Sub
In meinem Fall wird immer ein passender Eintrag dynamisch generiert, daher ist das Makro für mich eine gute Lösung. Für andere empfehle ich einen Abgleich des ComboBox-Inhaltes über eine Schleife mit der ComboBox-List, um einen passenden Eintrag zu finden.

Viele Grüße

Martin


  

Betrifft: AW: AutoWordSelect nach List-Zuweisung in auslösen von: Martin
Geschrieben am: 29.09.2014 10:09:18

Hallo,

da ich mein nachgebautes AutoWordSelect im Change-Ereignis der ComboBox nun doch allgemeingültig mit einer Schleife gelöst habe, poste ich hier noch meinen überarbeiteten Code:

Sub AutoSelect()
    Dim iSelStart As Integer, j As Integer
    
    With cboSearchString
    
        For j = 0 To .ListCount - 1
            If .Text = Left(.List(j), Len(.Text)) Then
                iSelStart = .SelStart
                .Value = .List(j)
                .SelStart = iSelStart
                .SelLength = Len(.Text) - iSelStart
                Exit For
            End If
        Next j
    
    End With
End Sub
Viele Grüße

Martin