Перейти до основного матеріалу

Як автозавершити текстове поле під час набору тексту в Excel?

За замовчуванням Excel може запам'ятати, що ви ввели в комірки поточного робочого аркуша, і автоматично заповнити цей вміст наступного разу, вводячи відповідну початкову букву в нову комірку. Однак якщо ви хочете, щоб увесь вміст, який ви ввели на робочому аркуші, був автозаповнюваним у текстовому полі (ActiveX Control), як ви могли це зробити? У цій статті буде запропоновано метод VBA, який допоможе вам самозавершити текстове поле під час введення початкової літери всередину.

Автозавершення текстового поля під час набору тексту за допомогою коду VBA


Автозавершення текстового поля під час набору тексту за допомогою коду VBA

Будь ласка, виконайте наступні дії, щоб зробити автозаповнення текстового поля під час набору початкової літери всередині текстового поля.

1. Вставте текстове поле, клацнувши Розробник > Insert > Текстове поле (керування ActiveX). Дивіться знімок екрана:

2. А потім натисніть Розробник > Insert > Вікно списку (елемент керування ActiveX) щоб вставити поле списку в поточний аркуш. Дивіться знімок екрана:

3. Клацніть правою кнопкою миші вкладку аркуша, а потім клацніть Переглянути код з контекстного меню, як показано нижче.

4 В Microsoft Visual Basic для додатків вікно, скопіюйте та вставте нижче код VBA у вікно коду. А потім клацніть Tools > посилання, а потім перевірте Виконання сценаріїв 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 вниз клавіша зі стрілкою, щоб переміщатися між усіма текстами автозаповнення у полі списку, а потім натисніть Що натомість? Створіть віртуальну версію себе у клавішу для введення потрібної в текстове поле.


Статті по темі:

Найкращі інструменти продуктивності офісу

🤖 Kutools AI Aide: Революціонізуйте аналіз даних на основі: Інтелектуальне виконання   |  Згенерувати код  |  Створення спеціальних формул  |  Аналізуйте дані та створюйте діаграми  |  Викликати функції Kutools...
Популярні функції: Знайдіть, виділіть або визначте дублікати   |  Видалити порожні рядки   |  Об’єднайте стовпці або клітинки без втрати даних   |   Раунд без Формули ...
Супер пошук: VLookup за кількома критеріями    Багатозначний VLookup  |   VLookup на кількох аркушах   |   Нечіткий пошук ....
Розширений розкривний список: Швидке створення випадаючого списку   |  Залежний спадний список   |  Виберіть розкривний список, що вибирається ....
Менеджер колонок: Додайте конкретну кількість стовпців  |  Перемістити стовпці  |  Перемкнути статус видимості прихованих стовпців  |  Порівняйте діапазони та стовпці ...
Особливості: Фокус сітки   |  Перегляд дизайну   |   Велика панель формул    Диспетчер робочих книг і аркушів   |  Бібліотека ресурсів (автотекст)   |  Вибір дати   |  Об’єднайте робочі аркуші   |  Шифрування/розшифрування клітинок    Надсилайте листи за списком   |  Супер фільтр   |   Спеціальний фільтр (фільтр жирний/курсив/закреслений...) ...
Топ-15 наборів інструментів12 текст Tools (додати текст, Видалити символи, ...)   |   50 + Графік типи (діаграма Ганта, ...)   |   40+ Практичний Формули (Розрахуйте вік на основі дня народження, ...)   |   19 вставка Tools (Вставте QR-код, Вставити зображення зі шляху, ...)   |   12 Перетворення Tools (Числа до слів, Валютна конверсія, ...)   |   7 Злиття та розділення Tools (Розширені комбіновані ряди, Розділені клітини, ...)   |   ... і більше

Покращуйте свої навички Excel за допомогою Kutools для Excel і відчуйте ефективність, як ніколи раніше. Kutools для Excel пропонує понад 300 додаткових функцій для підвищення продуктивності та економії часу.  Натисніть тут, щоб отримати функцію, яка вам найбільше потрібна...

Опис


Вкладка Office Передає інтерфейс із вкладками в Office і значно полегшує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
Comments (1)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Why would anyone go for writing a script when there are simpler ways to get a dropdown list???
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations