Як автозавершити текстове поле під час набору тексту в Excel?
За замовчуванням Excel може запам'ятати, що ви ввели в комірки поточного робочого аркуша, і автоматично заповнити цей вміст наступного разу, вводячи відповідну початкову букву в нову комірку. Однак якщо ви хочете, щоб увесь вміст, який ви ввели на робочому аркуші, був автозаповнюваним у текстовому полі (ActiveX Control), як ви могли це зробити? У цій статті буде запропоновано метод VBA, який допоможе вам самозавершити текстове поле під час введення початкової літери всередину.
Автозавершення текстового поля під час набору тексту за допомогою коду VBA
- Повторне використання будь-чого: Додайте найбільш уживані або складні формули, діаграми та будь-що інше до вибраного та швидко використовуйте їх у майбутньому.
- Більше 20 функцій тексту: Витяг номера з текстового рядка; Витяг або видалення частини текстів; Перетворення чисел і валют в англійські слова.
- Злиття інструментів: Кілька робочих книжок та аркушів в одне ціле; Об’єднати кілька клітинок / рядків / стовпців без втрати даних; Об’єднати повторювані рядки та суму.
- Розділити інструменти: Розділити дані на кілька аркушів на основі значення; Одна робоча книга до декількох файлів Excel, PDF або CSV; Один стовпець на кілька стовпців.
- Пропустити вставку Приховані / відфільтровані рядки; Граф і сума за кольором тла; Надіслати персоналізовані електронні листи кільком одержувачам масово.
- Суперфільтр: Створюйте розширені схеми фільтрів і застосовуйте їх до будь-яких аркушів; сортувати за тижнями, днями, періодичністю тощо; фільтр жирним шрифтом, формули, коментар ...
- Понад 300 потужних функцій; Працює з Office 2007-2019 та 365; Підтримує всі мови; Простота розгортання на вашому підприємстві чи в організації.
Автозавершення текстового поля під час набору тексту за допомогою коду VBA

Будь ласка, виконайте наступні дії, щоб зробити автозаповнення текстового поля під час набору початкової літери всередині текстового поля.
1. Вставте текстове поле, клацнувши Розробник > Insert > Текстове поле (керування ActiveX). Дивіться знімок екрана:
2. А потім натисніть Розробник > Insert > Вікно списку (елемент керування 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?
- Як очистити вміст текстового поля при натисканні в Excel?
- Як об’єднати тексти декількох комірок у текстове поле в Excel?
- Як вимкнути редагування в текстовому полі, щоб запобігти введенню користувачем в Excel?
- Як відформатувати текстове поле у відсотках у Excel?
Найкращі інструменти для підвищення продуктивності офісу
Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%
- Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
- Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
- Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
- Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
- Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
- Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
- Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
- Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
- Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу
- Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
- Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
- Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
