Cum se completează automat o casetă de text când se tastează în Excel?
Î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:
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:
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.
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
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:
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:
- Cum se selectează automat textul unei casete de text când este selectat în Excel?
- Cum se șterge conținutul casetei de text atunci când se face clic în Excel?
- Cum se concatenează textele mai multor celule într-o casetă text în Excel?
- Cum se dezactivează editarea în caseta de text pentru a preveni introducerea de utilizatori în Excel?
- Cum să formatați o casetă text ca procent în Excel?
Cele mai bune instrumente de productivitate de birou
Î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!