Note: The other languages of the website are Google-translated. Back to English
로그인  \/ 
x
or
x
REGISTER  \/ 
x

or

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

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

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

Office 탭 Office에서 탭 편집 및 찾아보기를 활성화하고 작업을 훨씬 쉽게 ...
Excel 용 Kutools는 대부분의 문제를 해결하고 생산성을 80 % 향상시킵니다.
  • 무엇이든 재사용 : 가장 많이 사용되거나 복잡한 수식, 차트 및 기타 항목을 즐겨 찾기에 추가하고 나중에 빠르게 재사용 할 수 있습니다.
  • 20 개 이상의 텍스트 기능 : 텍스트 문자열에서 숫자 추출; 텍스트의 일부 추출 또는 제거 숫자와 통화를 영어 단어로 변환합니다.
  • 병합 도구: 여러 통합 문서와 시트를 하나로; 데이터 손실없이 여러 셀 / 행 / 열 병합; 중복 행과 합계를 병합합니다.
  • 분할 도구: 값을 기준으로 데이터를 여러 시트로 분할합니다. 하나의 통합 문서에서 여러 Excel, PDF 또는 CSV 파일로; 한 열에서 여러 열로.
  • 붙여 넣기 건너 뛰기 숨겨진 / 필터링 된 행; 수와 합계 배경색 별; 개인화 된 이메일을 여러 수신자에게 대량으로 보냅니다.
  • 슈퍼 필터 : 고급 필터 구성표를 만들고 모든 시트에 적용하십시오. 종류 주, 일, 빈도 등으로; FILTER 굵게, 수식, 주석으로 ...
  • 300 개 이상의 강력한 기능; Office 2007-2019 및 365에서 작동합니다. 모든 언어를 지원합니다. 기업 또는 조직에 쉽게 배포 할 수 있습니다.

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

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

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

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

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

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

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


관련 기사 :


최고의 사무 생산성 도구

Excel 용 Kutools는 대부분의 문제를 해결하고 생산성을 80 % 향상시킵니다.

  • 재사용: 빠르게 삽입 복잡한 공식, 차트 그리고 이전에 사용한 모든 것; 셀 암호화 암호로; 메일 링리스트 생성 이메일 보내기 ...
  • 슈퍼 포뮬러 바 (여러 줄의 텍스트와 수식을 쉽게 편집 할 수 있습니다.) 레이아웃 읽기 (많은 수의 셀을 쉽게 읽고 편집합니다.) 필터링 된 범위에 붙여 넣기...
  • 셀 / 행 / 열 병합 데이터 손실없이; 셀 내용 분할; 중복 행 / 열 결합... 중복 셀 방지; 범위 비교...
  • 중복 또는 고유 선택 행; 빈 행 선택 (모든 셀이 비어 있음); 슈퍼 찾기 및 퍼지 찾기 많은 통합 문서에서; 무작위 선택 ...
  • 정확한 사본 수식 참조를 변경하지 않고 여러 셀; 참조 자동 생성 여러 시트에; 글 머리 기호 삽입, 확인란 등 ...
  • 텍스트 추출, 텍스트 추가, 위치 별 제거, 공간 제거; 페이징 부분합을 만들고 인쇄합니다. 셀 내용과 주석 간 변환...
  • 슈퍼 필터 (다른 시트에 필터 구성표 저장 및 적용) 고급 정렬 월 / 주 / 일, 빈도 등 특수 필터 굵은 기울임 꼴로 ...
  • 통합 문서와 워크 시트 결합; 키 열을 기반으로 테이블 병합; 데이터를 여러 시트로 분할; xls, xlsx 및 PDF 일괄 변환...
  • 300 개 이상의 강력한 기능. Office / Excel 2007-2019 및 365를 지원합니다. 모든 언어를 지원합니다. 기업 또는 조직에 쉽게 배포 할 수 있습니다. 전체 기능 30 일 무료 평가판. 60 일 환불 보장.
kte 탭 201905

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

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50 % 향상시키고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    suprio · 3 years ago
    Why would anyone go for writing a script when there are simpler ways to get a dropdown list???