Skip to main content

Kutools for Office — 하나의 패키지. 다섯 가지 도구. 더 많은 일을 처리하세요.

Excel에서 입력할 때 텍스트 상자를 자동으로 완성하려면 어떻게 해야 하나요?

Author Siluvia Last modified

기본적으로 Excel은 현재 워크시트의 셀에 입력한 내용을 기억하고, 새로운 셀에 관련된 첫 글자를 입력할 때 해당 내용을 자동으로 완성합니다. 그러나 워크시트에 입력한 모든 내용이 텍스트 상자(ActiveX 컨트롤)에서 자동으로 완성되도록 하려면 어떻게 해야 할까요? 이 문서에서는 VBA 방법을 제공하여 텍스트 상자 내부에서 첫 글자를 입력할 때 자동으로 완성하는 방법을 설명합니다.

VBA 코드를 사용하여 입력 시 텍스트 상자를 자동으로 완성하기


VBA 코드를 사용하여 입력 시 텍스트 상자를 자동으로 완성하기

텍스트 상자 안에 첫 글자를 입력할 때 자동으로 완성되도록 하려면 다음과 같이 진행하세요.

1. 개발 도구 > 삽입 > 텍스트 상자 (ActiveX 컨트롤)을 클릭하여 텍스트 상자를 삽입하세요. 스크린샷 보기:

click to insert Text Box

2. 그리고 개발 도구 > 삽입 > 목록 상자 (ActiveX 컨트롤)을 클릭하여 현재 워크시트에 목록 상자를 삽입하세요. 스크린샷 보기:

click to insert List Box

3. 시트 탭을 마우스 오른쪽 버튼으로 클릭한 다음 아래 스크린샷과 같이 바로 가기 메뉴에서 코드 보기(V)를 클릭하세요.

click View Code from right click menu

4. Microsoft Visual Basic for Applications 창에서 아래 VBA 코드를 복사하여 코드 창에 붙여넣으세요. 그런 다음 도구 > 참조를 클릭하고 참조 - VBAProject 대화 상자에서 Microsoft Scripting Runtime 항목을 선택하세요. 스크린샷 보기:

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

go to References dialog box and check Microsoft Scripting Runtime

참고: 코드에서 ListBox1Textbox1은 워크시트에 삽입한 목록 상자와 텍스트 상자의 이름입니다.

5. Alt + Q 키를 눌러 Microsoft Visual Basic for Applications 창을 종료하세요.

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

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

이제부터는 텍스트 상자에 첫 글자를 입력하면, 워크시트에 입력했던 모든 텍스트 중 해당 글자로 시작하는 텍스트가 텍스트 상자 오른쪽에 위치한 목록 상자에 표시됩니다. 필요한 항목을 더블 클릭하여 텍스트 상자에 입력하세요. 스크린샷 보기:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

참고: 또는 아래 화살표 키를 사용하여 목록 상자에 있는 모든 자동 완성 텍스트를 이동하고, Enter 키를 눌러 필요한 항목을 텍스트 상자에 입력할 수 있습니다.



관련 기사:

최고의 오피스 생산성 도구

🤖 Kutools AI 도우미: 데이터 분석에 혁신을 가져옵니다. 방법: 지능형 실행   |  코드 생성  |  사용자 정의 수식 생성  |  데이터 분석 및 차트 생성  |  Kutools Functions 호출
인기 기능: 중복 찾기, 강조 또는 중복 표시   |  빈 행 삭제   |  데이터 손실 없이 열 또는 셀 병합   |   반올림(수식 없이) ...
슈퍼 LOOKUP: 다중 조건 VLOOKUP    다중 값 VLOOKUP  |   다중 시트 조회   |   퍼지 매치 ....
고급 드롭다운 목록: 드롭다운 목록 빠르게 생성   |  종속 드롭다운 목록   |  다중 선택 드롭다운 목록 ....
열 관리자: 지정한 수의 열 추가  |  열 이동  |  숨겨진 열의 표시 상태 전환  |  범위 및 열 비교 ...
추천 기능: 그리드 포커스   |  디자인 보기   |   향상된 수식 표시줄    통합 문서 & 시트 관리자   |  자동 텍스트 라이브러리   |  날짜 선택기   |  데이터 병합   |  셀 암호화/해독    목록으로 이메일 보내기   |  슈퍼 필터   |   특수 필터(굵게/이탤릭/취소선 필터 등) ...
15대 주요 도구 세트12 가지 텍스트 도구(텍스트 추가, 특정 문자 삭제, ...)  |  50+ 종류의 차트(간트 차트, ...)  |  40+ 실용적 수식(생일을 기반으로 나이 계산, ...)  |  19 가지 삽입 도구(QR 코드 삽입, 경로에서 그림 삽입, ...)  |  12 가지 변환 도구(단어로 변환하기, 통화 변환, ...)  |  7 가지 병합 & 분할 도구(고급 행 병합, 셀 분할, ...)  |  ... 등 다양
Kutools는 사용자가 선호하는 언어로 이용할 수 있습니다 – 영어, 스페인어, 독일어, 프랑스어, 중국어 및40개 이상의 언어 지원!

Kutools for Excel과 함께 엑셀 능력을 한 단계 끌어 올리고, 이전에 없던 효율성을 경험하세요. Kutools for Excel은300개 이상의 고급 기능으로 생산성을 높이고 저장 시간을 단축합니다.  가장 필요한 기능을 바로 확인하려면 여기를 클릭하세요...


Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 더욱 간편하게 만듭니다

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기를 활성화합니다.
  • 새 창 대신 같은 창의 새로운 탭에서 여러 파일을 열고 생성할 수 있습니다.
  • 생산성이50% 증가하며, 매일 수백 번의 마우스 클릭을 줄여줍니다!

모든 Kutools 추가 기능. 한 번에 설치

Kutools for Office 제품군은 Excel, Word, Outlook, PowerPoint용 추가 기능과 Office Tab Pro를 한 번에 제공하여 Office 앱을 활용하는 팀에 최적입니다.

Excel Word Outlook Tabs PowerPoint
  • 올인원 제품군 — Excel, Word, Outlook, PowerPoint 추가 기능 + Office Tab Pro
  • 설치 한 번, 라이선스 한 번 — 몇 분 만에 손쉽게 설정(MSI 지원)
  • 함께 사용할 때 더욱 효율적 — Office 앱 간 생산성 향상
  • 30일 모든 기능 사용 가능 — 회원가입/카드 불필요
  • 최고의 가성비 — 개별 추가 기능 구매 대비 절약