Auto-vervollständigen-text-Feld in excel-VBA

Erstelle ich ein excel-sheet, das würde autocomplete text basiert auf dem text vorhanden, die in einer bestimmten Spalte. Nach dem Versuch zu machen, mich selbst erfolglos war, wurde ich online-Suche für Beispiel-codes, die ich ändern könnte, und integrieren Sie in mein Programm. (und nicht plagiieren)

Habe ich heruntergeladen Workbook1.xls von http://www.ozgrid.com/forum/showthread.php?t=144438

Den code

Option Explicit

Dim ufEventsDisabled As Boolean
Dim autoCompleteEnabled As Boolean
Dim oRange As Range

Private Sub TextBox1_Change()
    If ufEventsDisabled Then Exit Sub
    If autoCompleteEnabled Then Call myAutoComplete(TextBox1)
End Sub

Sub myAutoComplete(aTextBox As MSForms.TextBox)
    Dim RestOfCompletion As String
    On Error GoTo Halt
    With aTextBox
        If .SelStart + .SelLength = Len(.Text) Then
            RestOfCompletion = Mid(oRange.Cells(1, 1).AutoComplete(.Text), Len(.Text) + 1)
            ufEventsDisabled = True
            .Text = .Text & RestOfCompletion
            .SelStart = Len(.Text) - Len(RestOfCompletion)
            .SelLength = Len(RestOfCompletion)
        End If
    End With
Halt:
ufEventsDisabled = False
On Error GoTo 0
End Sub

Private Sub TextBox1_AfterUpdate()
    Dim strCompleted As String
    With TextBox1
        strCompleted = oRange.AutoComplete(.Text)
        If LCase(strCompleted) = LCase(.Text) Then
            ufEventsDisabled = True
            .Text = strCompleted
            ufEventsDisabled = False
        End If
    End With
End Sub

Private Sub TextBox1_Enter()
    Set oRange = ThisWorkbook.Sheets("Sheet1").Range("f4")
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    autoCompleteEnabled = KeyCode <> vbKeyBack
    autoCompleteEnabled = ((vbKey0 <= KeyCode) And (KeyCode <= vbKeyZ))
End Sub

Private Sub CommandButton1_Click()
    Unload Me
End Sub

Private Sub UserForm_Click()

End Sub

Wenn Sie möchten, beachten Sie die Zeile RestOfCompletion = Mid(oRange.Cells(1, 1).AutoVervollständigen - (.Text), Len(.Text) + 1), ich Frage mich, was AutoVervollständigen hier tut. Es ist nicht eine eingebaute Funktion, und definiert ist, nicht überall. Noch der code läuft wunderbar. Ich bin sehr gespannt.

Dank

InformationsquelleAutor Ank | 2011-11-01
Schreibe einen Kommentar