Auswahl in Combobox vormarkieren

27/09/2007 - 08:27 von Urs Widmer | Report spam
Guten Tag

Es besteht eine Liste "cmbAuswahlliste" mit 160 Eintràgen. Um einen Eintrag
schneller zu finden, sollte man auf Buchstaben-Schaltflàchen klicken können.
Die Liste sollte aufklappen und den ersten Eintrag zum gewàhlen Buchstaben
markieren.

Es erscheint jedoch immer folgende Fehlermeldung: Ungültiger Eigenschaftenwert

Für eine Tipp wàre ich dankbar.

Dim sB as string
Dim sP as Double

'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Private Sub cmd_E_Click()
'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Call nAuswahlBuchstabe("E", 41) 'Buchstabe und Startposition
End Sub

'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Public Function nAuswahlBuchstabe(sB, sP)
'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
With cmbAuswahlliste
.DropDown
.Text = sB 'Ausgewàhlter Buchstabe
.SelStart = sP 'Startposition in Liste
End With
End Function


Grüsse
Urs Widmer
 

Lesen sie die antworten

#1 Thomas Gahler
27/09/2007 - 09:33 | Warnen spam
Hallo Urs



Es erscheint jedoch immer folgende Fehlermeldung: Ungültiger
Eigenschaftenwert
.SelStart = sP 'Startposition in Liste


Ohne deinen Code zu testen, würde ich den Fehler hier vermuten.

Ich galube du interprtierst die .SelStart-Eigenschaft falsch. Es geht hier
nicht darum den 41izgsten Eintrag zu markieren, sondern die Einfügenmarke
(Cursor) im markierten Wert auf den 41zigsten Buchstaben zu setzen. Dein
Text wird wohl nicht so gross sein.


Bsp:
In einer Textbox steht der Wert "Hallo Welt". Mittels
.SelStart = 2
.SelLengh = 4
wird der Cursor die Buchstaben "allo" markiert haben.





Auch jetzt habe ich den Code doch noch angeschaut. So sollte es dann bei dir
klappern


Private Sub UserForm_Click()
Dim iPos As Integer
iPos = nAuswahlBuchstabe(Me.ComboBox1, "Be")
End Sub

Private Function nAuswahlBuchstabe( _
ByVal cbo As MSForms.ComboBox, _
ByVal strStartText As String) _
As Integer
'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Dim i As Integer

With cbo
For i = 0 To .ListCount - 1
If Left$(.List(i, 0), Len(strStartText)) = strStartText Then
Exit For
End If
Next i
.ListIndex = i
.DropDown
nAuswahlBuchstabe = .ListIndex
End With
End Function


Alles klar?






Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP2), Office XP (SP3)

Ähnliche fragen