2011-11-01 4 views
0

특정 열에있는 텍스트를 기반으로 텍스트를 자동 완성하는 Excel 시트를 만듭니다. 자신을 성공적으로 만들지 않으려 고 시도한 후에 온라인 프로그램을 수정하고 프로그램에 통합 할 수있는 샘플 코드를 찾고있었습니다. 내가 http://www.ozgrid.com/forum/showthread.php?t=144438VBA의 자동 완성 텍스트 상자

코드에서 Workbook1.xls 다운로드

(그리고 표절하지 않음)이 라인 RestOfCompletion = 중간 (oRange.Cells (1주의하세요

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 

이다 1). AutoComplete (. 텍스트), Len (. 텍스트) +1), 나는 AutoComplete가 여기서 무엇을하고 있는지 궁금해하고 있었다. 내장 기능이 아니며 어디에도 정의되어 있지 않습니다. 여전히 코드는 정상적으로 실행됩니다. 나는 매우 호기심이 많다.

감사

답변

2

.AutoComplete는 Range 개체의 함수이다 - 그것은 다른 시트에 존재하는 범위의 텍스트를 전달을 기반으로합니다.

현재이 기능에 대한 문서를 볼 수 있습니다

: 존재하는 경우 http://msdn.microsoft.com/en-us/library/bb209667(v=office.12).aspx

가 myAutoComplete 기능은 범위에 대해 자동 완성 데이터의 발견을 처리하고 코드의 다른 조각이 올바른 조각을 강조위한 것입니다 텍스트.

+0

고마워 .. 그 말이 맞는 ... 나는 새로운 VBA 프로그래머이며 다른 코드에서 배우려고하고있다. – Ank

관련 문제