在Excel VBA中自动完成文本框

我正在创build一个基于特定列中的文本自动完成文本的Excel工作表。 在试图让自己失败后,我在网上查找了可以修改并join到我的程序中的示例代码。 (而不是抄袭)

我从http://www.ozgrid.com/forum/showthread.php?t=144438下载了Workbook1.xls

代码是

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 

如果您注意到RestOfCompletion = Mid(oRange.Cells(1,1).AutoComplete(.Text),Len(.Text)+ 1)行,我想知道AutoComplete在这里做了什么。 它不是一个内置函数,并没有在任何地方定义。 代码仍然运行良好。 我很好奇。

谢谢

.AutoComplete是Range对象的一个​​函数,它是基于将文本传递给表单中其他位置的范围。

你可以在这里看到这个函数的文档: http : //msdn.microsoft.com/en-us/library/bb209667(v=office.12).aspx

如果它存在,myAutoComplete函数处理自动完成数据的范围,代码中的其他部分用于突出显示正确的文本。