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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den .AutoVervollständigen ist eine Funktion des Range-Objekts - Sie basiert auf der Weitergabe der text in einen Bereich vorhanden ist, an anderer Stelle auf dem Blatt.
Können Sie finden Sie in der Dokumentation zu dieser Funktion hier:
http://msdn.microsoft.com/en-us/library/bb209667(v=office.12).aspx
Den myAutoComplete Funktion behandelt die Suche nach der AutoVervollständigen-Daten gegen den Bereich, wenn es vorhanden ist, und die anderen Teile in den code für die Hervorhebung der korrekten text.