Прескочи на основното съдържание

Как да попълвам автоматично текстово поле при въвеждане в Excel?

Автор: Силувия Последна промяна: 2017-12-06

По подразбиране Excel може да запомни какво сте въвели в клетките на текущия работен лист и да допълни автоматично това съдържание следващия път, когато въвеждате свързана начална буква в нова клетка. Въпреки това, ако искате да направите цялото съдържание, което сте въвели в работния лист, да бъде автоматично довършвано в текстово поле (ActiveX Control), как бихте могли да го направите? Тази статия ще предостави метод на VBA, който да ви помогне да попълните автоматично текстово поле, когато въвеждате начална буква вътре.

Автоматично попълване на текстово поле, когато пишете с VBA код


Автоматично попълване на текстово поле, когато пишете с VBA код

Моля, направете следното, за да направите автоматично попълване на текстово поле, когато въвеждате начална буква в текстовото поле.

1. Моля, поставете текстово поле, като щракнете Софтуерен Инженер > Поставете > Текстово поле (ActiveX Control). Вижте екранна снимка:

2. И след това щракнете Софтуерен Инженер > Поставете > Списъчно поле (ActiveX Control) за вмъкване на списъчно поле в текущия работен лист. Вижте екранна снимка:

3. Щракнете с десния бутон върху раздела на листа, след което щракнете Преглед на кода от контекстното меню, както е показано на екранната снимка по-долу.

4. В Microsoft Visual Basic за приложения прозорец, моля, копирайте и поставете под кода на 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 намлява Текстово поле1 са името на списъчното поле и текстовото поле, които сте вмъкнали във вашия работен лист.

5. Натисни Друг + Q клавиши за излизане от Microsoft Visual Basic за приложения прозорец.

6. Изключете режима на проектиране, като щракнете Софтуерен Инженер > Режим на проектиране в работния лист.

7. Сега преминете към друг работен лист и след това се върнете към предишния работен лист, за да активирате VBA кода.

От сега нататък. Когато въвеждате начална буква в текстовото поле, всички текстове, които започват с тази буква, която сте въвели в работния лист, ще бъдат изброени в списъка, който се намира от дясната страна на текстовото поле. Моля, щракнете два пъти върху необходимия, за да го въведете в текстовото поле. Вижте екранна снимка:

Забележка: Можете да използвате Up or Надолу клавиш със стрелка за придвижване между всички текстове за автоматично довършване в списъчното поле и след това натиснете Въведете ключ за въвеждане на необходимия в текстовото поле.


Още по темата:

Най-добрите инструменти за продуктивност в офиса

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

Усъвършенствайте уменията си за 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