Excel 에서 입력 시 텍스트 상자를 자동 완성하려면 어떻게 하나요?
기본적으로 Excel 은 현재 워크시트의 셀에 입력한 내용을 기억하고, 다음에 새 셀에 관련된 첫 글자를 입력할 때 해당 내용을 자동 완성합니다。 그러나 워크시트에 입력한 모든 내용을 텍스트 상자(ActiveX 컨트롤)에서 자동 완성하려면 어떻게 해야 할까요? 이 문서에서는 텍스트 상자 내부에 첫 글자를 입력할 때 자동 완성되도록 도와주는 VBA 방법을 제공합니다。
VBA 코드로 입력 시 텍스트 상자 자동 완성하기
텍스트 상자 내부에 첫 글자를 입력할 때 자동 완성되도록 하려면 다음 단계를 따르세요。
1. 개발자>삽입>텍스트 상자(ActiveX 컨트롤)을 클릭하여 텍스트 상자를 삽입하세요。 스크린샷 참조:

2. 그런 다음개발자>삽입>목록 상자(ActiveX 컨트롤)을 클릭하여 현재 워크시트에 목록 상자를 삽입하세요。 스크린샷 참조:

3. 시트 탭을 마우스 오른쪽 버튼으로 클릭한 후, 아래 스크린샷과 같이 상황에 맞는 메뉴에서코드 보기를 클릭하세요。

4. Microsoft Visual Basic for Applications창에서 아래 VBA 코드를 복사하여 코드 창에 붙여넣으세요。 그런 다음도구>참조를 클릭하고,Microsoft Scripting Runtime상자를참조 – 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 
참고: 코드에서ListBox1및Textbox1은 워크시트에 삽입한 목록 상자와 텍스트 상자의 이름입니다。
5. Alt+Q키를 눌러Microsoft Visual Basic for Applications창을 종료하세요。
6. 워크시트에서개발자>디자인 모드를 클릭하여 디자인 모드를 끄세요。
7. 이제 다른 워크시트로 이동한 후 이전 워크시트로 돌아와 VBA 코드를 활성화하세요。
이제부터 텍스트 상자에 첫 글자를 입력하면, 워크시트에 입력한 내용 중 해당 글자로 시작하는 모든 텍스트가 텍스트 상자 오른쪽에 위치한 목록 상자에 표시됩니다。 필요한 항목을 두 번 클릭하여 텍스트 상자에 입력하세요。 스크린샷 참조:

참고: 목록 상자에서 자동 완성 텍스트 사이를 이동하려면위쪽또는아래쪽화살표 키를 사용하고, 필요한 항목을 텍스트 상자에 입력하려면Enter키를 누르세요。
관련 문서:
- Excel 에서 텍스트 상자가 선택되었을 때 그 안의 자동 선택 텍스트를 어떻게 하나요?
- Excel 에서 텍스트 상자를 클릭했을 때 내용을 지우려면 어떻게 하나요?
- Excel 에서 여러 셀의 텍스트를 텍스트 상자에 연결(병합)하려면 어떻게 하나요?
- Excel 에서 사용자의 입력을 방지하기 위해 텍스트 상자의 편집을 비활성화하려면 어떻게 하나요?
- Excel 에서 텍스트 상자를 백분율 형식으로 지정하려면 어떻게 하나요?
최고의 Office 생산성 도구
| 🤖 | KUTOOLS AI 도우미: 다음을 기반으로 데이터 분석 혁신하기:지능형 실행 | 코드 생성| 사용자 지정 수식 생성 | 데이터 분석 및 차트 생성| 향상된 함수 호출… |
| 인기 기능:찾기, 강조 표시 또는 중복 표시 | 빈 행 삭제 | 데이터 손실 없이 열 결합 또는 셀 제거 | 공식을 사용하지 않는 반올림... | |
| 슈퍼 LOOKUP:다중 조건 VLookup | 다중 값 VLookup | 여러 시트에서 VLookup | 퍼지 매치.... | |
| 고급 드롭다운 목록:드롭다운 목록 빠르게 생성 | 종속형 드롭다운 목록 | 다중 선택 드롭다운 목록.... | |
| 열 관리자:특정 수의 열 추가|열 이동|숨겨진 열의 표시 상태 전환|범위 및 열 비교... | |
| 주요 기능:그리드 포커스 | 디자인 보기 |향상된 수식 표시줄 | 워크북 및 시트 관리자 | 자원 라이브러리(자동 텍스트)| 날짜 선택기 | 워크시트 병합 | 암호화/셀 해독 | 목록으로 이메일 보내기 | 슈퍼 필터 | 특수 필터(굵은 글꼴이 있는 셀 필터링/기울임꼴/취소선。。。) 。。。 | |
| 상위 15 도구 모음:12 텍스트도구(텍스트 추가,특정 문자 삭제, ...)| 50+차트유형(간트 차트, ...)| 40+ 실용적인수식(생일을 기준으로 나이 계산, ...)| 19 삽입도구(QR 코드 삽입,경로에서 그림 삽입, ...)| 12 변환도구(단어로 변환하기,환율 변환, ...)| 7 병합 및 분할도구(고급 행 병합,셀 분할, ...)|그 외 더 많은 기능 |
Kutools for Excel 로 Excel 역량을 한 단계 업그레이드하고 전례 없는 효율성을 경험하세요。Kutools for Excel 는 생산성과 저장 시간을 향상시키는 300 개 이상의 고급 기능을 제공합니다。가장 필요한 기능을 지금 바로 확인하세요。。。
Office Tab 가 Office 에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만들어 줍니다
- Word, Excel, PowerPoint 에서 탭 기반 편집 및 읽기 기능을 활성화합니다, Publisher, Access, Visio 및 Project 에서도 사용 가능합니다。
- 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 생성할 수 있습니다。
- 50% 만큼 생산성을 높이고 매일 수백 번의 마우스 클릭을 줄여줍니다!
모든 Kutools 애드인。 하나의 설치 프로그램
Kutools for Office스위트 번들은 Excel, Word, Outlook 및 PowerPoint 용 애드인과 Office Tab Pro 를 포함하며, 다양한 Office 앱을 사용하는 팀에 이상적입니다。
- 올인원 스위트— Excel, Word, Outlook 및 PowerPoint 애드인 + Office Tab Pro
- 하나의 설치 프로그램, 하나의 라이선스— 몇 분 안에 설정 완료(MSI 지원)
- 함께 사용할수록 더 효과적입니다— Office 앱 전반에서 생산성 향상
- 30 일간 모든 기능 무료 체험— 등록이나 신용카드 필요 없음
- 최고의 가성비— 개별 애드인 구매 대비 절약