Salt la conținutul principal
 

Cum se completează automat o casetă de text când se tastează în Excel?

Autor: Siluvia Ultima modificare: 2024-08-14

În mod implicit, Excel poate să-și amintească ce ați introdus în celulele foii de lucru curente și să completați automat acest conținut data viitoare când introduceți o literă inițială legată într-o nouă celulă. Cu toate acestea, dacă doriți ca întregul conținut pe care l-ați introdus în foaia de lucru să fie completat automat într-o casetă de text (Control ActiveX), cum ați putea face? Acest articol va oferi o metodă VBA pentru a vă ajuta să completați automat o casetă text atunci când introduceți o literă inițială în interior.

Completați automat o casetă text când tastați cu cod VBA


Completați automat o casetă text când tastați cu cod VBA

Vă rugăm să procedați după cum urmează pentru a completa completarea automată a unei cutii de text atunci când introduceți o literă inițială în interiorul casetei de text.

1. Vă rugăm să introduceți o casetă text făcând clic pe Dezvoltator > Insera > Casetă text (control ActiveX). Vedeți captura de ecran:

faceți clic pentru a insera caseta de text

2. Și apoi faceți clic pe Dezvoltator > Insera > Casetă listă (control ActiveX) pentru a insera o casetă listă în foaia de lucru curentă. Vedeți captura de ecran:

faceți clic pentru a insera List Box

3. Faceți clic dreapta pe fila foaie, apoi faceți clic pe Afișați codul din meniul contextual așa cum este prezentat mai jos.

faceți clic pe Vizualizare cod din meniul cu clic dreapta

4. În Microsoft Visual Basic pentru aplicații fereastra, vă rugăm să copiați și să lipiți mai jos codul VBA în fereastra Cod. Și apoi faceți clic pe Instrumente > Referinte, și apoi verificați Runtime Microsoft Scripting cutie în Referințe - VBAProject căsuță de dialog. Vedeți captura de ecran:

Cod VBA: Completați automat o casetă de text când tastați

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

accesați caseta de dialog Referințe și verificați Microsoft Scripting Runtime

notițe: În cod, ListBox1 si Caseta de text 1 sunt numele casetei de listă și textului pe care le-ați inserat în foaia de lucru.

5. apasă pe Alt + Q tastele pentru a ieși din Microsoft Visual Basic pentru aplicații fereastră.

6. Dezactivați modul Design făcând clic pe Dezvoltator > Mod de proiectare în foaia de lucru.

7. Acum treceți la o altă foaie de lucru și apoi reveniți la foaia de lucru anterioară pentru a activa codul VBA.

De-acum inainte. Când introduceți o literă inițială în caseta de text, toate textele care încep cu acea literă pe care ați introdus-o în foaia de lucru vor fi listate în caseta de listă care se află în partea dreaptă a casetei de text. Vă rugăm să faceți dublu clic pe cel necesar pentru al introduce în caseta de text. Vedeți captura de ecran:

Când introduceți o literă inițială în caseta de text, vor fi listate toate textele care încep cu acea literă

notițe: Puteți folosi funcția Up or Jos tasta săgeată pentru a vă deplasa printre toate textele de completare automată din caseta de listă, apoi apăsați tasta Intrați tasta pentru a introduce cea necesară în caseta de text.



Legate de articole:

Cele mai bune instrumente de productivitate de birou

🤖 Kutools AI Aide: Revoluționați analiza datelor pe baza: Execuție inteligentă   |  Generați codul  |  Creați formule personalizate  |  Analizați datele și generați diagrame  |  Invocați funcțiile Kutools...
Caracteristici populare: Găsiți, evidențiați sau identificați duplicatele   |  Ștergeți rândurile goale   |  Combinați coloane sau celule fără a pierde date   |   Rundă fără Formula ...
Super căutare: VLookup cu mai multe criterii    VLookup cu valori multiple  |   VLookup pe mai multe foi   |   Căutare fuzzy ....
Listă derulantă avansată: Creați rapid o listă derulantă   |  Listă drop-down dependentă   |  Listă derulantă cu selectare multiplă ....
Manager de coloane: Adăugați un număr specific de coloane  |  Mutați coloanele  |  Comutați starea vizibilității coloanelor ascunse  |  Comparați intervale și coloane ...
Caracteristici prezentate: Focus pe grilă   |  Vedere de proiectare   |   Big Formula Bar    Manager registru de lucru și foi   |  Biblioteca de resurse (Text automat)   |  Data Picker   |  Combinați foi de lucru   |  Criptare/Decriptare celule    Trimiteți e-mailuri după listă   |  Super Filtru   |   Filtru special (filtrează bold/italic/barat...) ...
Top 15 seturi de instrumente12 Text Instrumente (Adăuga text, Eliminați caractere,...)   |   50+ Diagramă Tipuri de (Gantt Chart,...)   |   40+ Practic Formule (Calculați vârsta pe baza zilei de naștere,...)   |   19 inserare Instrumente (Introduceți codul QR, Inserați imaginea din cale,...)   |   12 Convertire Instrumente (Numere la cuvinte, conversie valutara,...)   |   7 Merge & Split Instrumente (Rânduri combinate avansate, Celule divizate,...)   |   ... și altele

Îmbunătățiți-vă abilitățile Excel cu Kutools pentru Excel și experimentați eficiența ca niciodată. Kutools pentru Excel oferă peste 300 de funcții avansate pentru a crește productivitatea și a economisi timp.  Faceți clic aici pentru a obține funcția de care aveți cea mai mare nevoie...


Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!