메인 컨텐츠로 가기
 

Excel에서 입력 할 때 텍스트 상자를 자동 완성하는 방법은 무엇입니까?

작가: 실루비아 최종 수정 날짜: 2024-08-14

기본적으로 Excel은 현재 워크 시트의 셀에 입력 한 내용을 기억하고 다음에 관련 첫 글자를 새 셀에 입력 할 때이 내용을 자동 완성 할 수 있습니다. 그러나 워크 시트에 입력 한 모든 내용이 텍스트 상자 (ActiveX Control)에 자동 완성되도록하려면 어떻게해야합니까? 이 기사에서는 내부에 첫 글자를 입력 할 때 텍스트 상자를 자동 완성하는 데 도움이되는 VBA 방법을 제공합니다.

VBA 코드로 입력 할 때 텍스트 상자 자동 완성


VBA 코드로 입력 할 때 텍스트 상자 자동 완성

텍스트 상자에 첫 글자를 입력 할 때 텍스트 상자가 자동 ​​완성되도록하려면 다음과 같이하십시오.

1. 클릭하여 텍스트 상자를 삽입하십시오 개발자 > 끼워 넣다 > 텍스트 상자 (ActiveX 컨트롤). 스크린 샷보기 :

텍스트 상자를 삽입하려면 클릭하세요.

2. 그런 다음 개발자 > 끼워 넣다 > 목록 상자 (ActiveX 컨트롤) 현재 워크 시트에 목록 상자를 삽입합니다. 스크린 샷보기 :

목록 상자를 삽입하려면 클릭하세요.

3. 시트 탭을 마우스 오른쪽 단추로 클릭 한 다음 코드보기 아래 스크린 샷과 같이 컨텍스트 메뉴에서.

마우스 오른쪽 버튼 클릭 메뉴에서 코드 보기를 클릭하세요.

4. 에서 응용 프로그램 용 Microsoft Visual Basic 창에서 VBA 코드 아래에 복사하여 코드 창에 붙여 넣으십시오. 그런 다음 도구 > 참고자료을 클릭 한 다음 Microsoft 스크립팅 런타임 상자에 참조 – VBAProject 대화 상자. 스크린 샷보기 :

VBA 코드 : 입력시 텍스트 상자 자동 완성

Dim xRg As Range
Dim xDic As New Dictionary
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.TextBox1.Value = Me.ListBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xVal As String
    On Error Resume Next
    If IsNumeric(Target.Value) Then
        xVal = Str(Target.Value)
    Else
        xVal = Target.Value
    End If
    If xVal <> "" Then
        If Not xDic.Exists(xVal) Then
            xDic.Add xVal, xVal
        End If
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Me.ListBox1.Visible = False
End Sub
Private Sub Worksheet_Activate()
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    If xRg Is Nothing Then
        Set xRg = ActiveSheet.UsedRange
    End If
    Me.ListBox1.Visible = False
    xDic.RemoveAll
    With Me.ListBox1
        For I = 1 To xRg.Count
            xStr = xRg(I).Value
            If xStr <> "" Then
                .AddItem xStr
                If Not xDic.Exists(xStr) Then
                    xDic.Add xStr, xStr
                End If
            End If
        Next
    End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With Me.ListBox1
        .Top = Me.TextBox1.Top
        .Left = Me.TextBox1.Left + Me.TextBox1.Width
        .Width = Me.TextBox1.Width
    End With
    TextBoxVal Me.TextBox1.Object
End Sub
Sub TextBoxVal(xTextBox As Variant)
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    Application.ScreenUpdating = False
    If xRg Is Nothing Then Exit Sub
    Me.ListBox1.Clear
    xStr = xTextBox.Value
    If xStr = "" Then
        Me.ListBox1.Visible = False
        Application.EnableEvents = True
        Exit Sub
    End If
    For I = 0 To UBound(xDic.Items)
        If Left(xDic.Items(I), Len(xStr)) = xStr Then
            Me.ListBox1.AddItem xDic.Items(I)
        End If
    Next
    Me.ListBox1.Visible = True
    If Me.ListBox1.ListCount > 0 Then
        With xTextBox
            .Value = Me.ListBox1.List(0)
            .SelStart = Len(xStr)
            .SelLength = Len(Me.ListBox1.List(0))
        End With
    End If
    Me.ListBox1.Activate
    Me.ListBox1.Selected(0) = True
    Application.ScreenUpdating = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Me.TextBox1.Value = Me.ListBox1.Value
    End If
End Sub

참조 대화 상자로 이동하여 Microsoft Scripting Runtime을 확인하세요.

주의 사항: 코드에서 ListBox1 and 텍스트 상자 1 워크 시트에 삽입 한 목록 상자 및 텍스트 상자의 이름입니다.

5. 누르세요 다른 + Q 나가는 열쇠 응용 프로그램 용 Microsoft Visual Basic 창.

6. 클릭하여 디자인 모드를 끕니다. 개발자 > 디자인 모드 워크 시트에서.

7. 이제 다른 워크 시트로 이동 한 다음 이전 워크 시트로 돌아가서 VBA 코드를 활성화합니다.

지금부터. 텍스트 상자에 첫 글자를 입력 할 때 워크 시트에 입력 한 해당 글자로 시작하는 모든 텍스트는 텍스트 상자의 오른쪽에있는 목록 상자 안에 나열됩니다. 필요한 것을 두 번 클릭하여 텍스트 상자에 입력하십시오. 스크린 샷보기 :

텍스트 상자에 첫 문자를 입력하면 해당 문자로 시작하는 모든 텍스트가 나열됩니다.

주의 사항: Up or 아래로 화살표 키를 눌러 목록 상자의 모든 자동 완성 텍스트 사이를 이동 한 다음 엔터 버튼 텍스트 상자에 필요한 키를 입력합니다.



관련 기사 :

최고의 사무 생산성 도구

🤖 Kutools AI 보좌관: 다음을 기반으로 데이터 분석을 혁신합니다. 지능형 실행   |  코드 생성  |  사용자 정의 수식 만들기  |  데이터 분석 및 차트 생성  |  Kutools 기능 호출...
인기 기능: 중복 항목 찾기, 강조 표시 또는 식별   |  빈 행 삭제   |  데이터 손실 없이 열이나 셀 결합   |   수식없이 반올림 ...
슈퍼 조회: 다중 기준 VLookup    다중 값 VLookup  |   여러 시트에 걸친 VLookup   |   퍼지 조회 ....
고급 드롭다운 목록: 드롭다운 목록을 빠르게 생성   |  종속 드롭다운 목록   |  다중 선택 드롭 다운 목록 ....
열 관리자: 특정 개수의 열 추가  |  열 이동  |  Toggle 숨겨진 열의 가시성 상태  |  범위 및 열 비교 ...
특색 지어진 특징: 그리드 포커스   |  디자인보기   |   큰 수식 바    통합 문서 및 시트 관리자   |  자료실 (자동 텍스트)   |  날짜 선택기   |  워크 시트 결합   |  셀 암호화/해독    목록으로 이메일 보내기   |  슈퍼 필터   |   특수 필터 (굵게/기울임꼴/취소선 필터링...) ...
상위 15개 도구 세트12 본문 도구 (텍스트 추가, 문자 제거,...)   |   50+ 거래차트 유형 (Gantt 차트,...)   |   40+ 실용 방식 (생일을 기준으로 나이 계산,...)   |   19 삽입 도구 (QR 코드 삽입, 경로에서 그림 삽입,...)   |   12 매출 상승 도구 (숫자를 단어로, 환율,...)   |   7 병합 및 분할 도구 (고급 결합 행, 셀 분할,...)   |   ... 그리고 더

Excel용 Kutools로 Excel 기술을 강화하고 이전과는 전혀 다른 효율성을 경험해 보세요. Excel용 Kutools는 생산성을 높이고 시간을 절약하기 위해 300개 이상의 고급 기능을 제공합니다.  가장 필요한 기능을 얻으려면 여기를 클릭하십시오...


Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!