Kako samodejno dokončati besedilno polje pri tipkanju v Excelu?
Excel si privzeto zapomni, kaj ste vnesli v celice trenutnega delovnega lista, in naslednjič samodejno dokonča to vsebino, ko vtipkate sorodno začetno črko v novo celico. Če pa želite, da se vsa vsebina, ki ste jo vnesli na delovni list, samodejno dokonča v besedilnem polju (ActiveX Control), kako bi to lahko storili? V tem članku je opisana metoda VBA, ki vam pomaga pri samodokončanju besedilnega polja pri vnašanju začetne črke.
Samodejno dokončajte polje z besedilom, ko tipkate s kodo VBA
Samodejno dokončajte polje z besedilom, ko tipkate s kodo VBA
Naredite naslednje, če želite, da se besedilno polje samodejno dokonča, ko vnesete začetno črko v polje.
1. Vstavite besedilno polje s klikom Razvojni > Vstavi > Besedilno polje (nadzor ActiveX). Oglejte si posnetek zaslona:
2. In nato kliknite Razvojni > Vstavi > List List (ActiveX Control) če želite v trenutni delovni list vstaviti polje s seznamom. Oglejte si posnetek zaslona:
3. Z desno miškino tipko kliknite jeziček lista in nato kliknite Ogled kode iz kontekstnega menija, kot je prikazano spodaj.
4. V Ljubljani Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite spodnjo kodo VBA v okno Code. In nato kliknite Orodja > Referencein nato preverite Izvajanje Microsoftovih skriptov polje v Reference - VBAProject pogovorno okno. Oglejte si posnetek zaslona:
Koda VBA: med tipkanjem samodejno dokončajte polje z besedilom
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
Opombe: V kodi, ListBox1 in Besedilo1 sta ime seznamskega polja in besedilnega polja, ki ste ga vstavili v svoj delovni list.
5. Pritisnite druga + Q tipke za izhod iz Microsoft Visual Basic za aplikacije okno.
6. Izklopite način oblikovanja s klikom Razvojni > Način oblikovanja v delovnem listu.
7. Zdaj se pomaknite na drug delovni list in se nato vrnite na prejšnji delovni list, da omogočite kodo VBA.
Od zdaj naprej. Ko vnesete začetno črko v besedilno polje, bodo vsa besedila, ki se začnejo s tisto črko, ki ste jo vnesli v delovni list, navedena v polju s seznamom na desni strani besedilnega polja. Dvokliknite želenega, da ga vnesete v besedilno polje. Oglejte si posnetek zaslona:
Opombe: Lahko uporabite Up or navzdol puščično tipko za premikanje med vsemi besedili s samodokončanjem v seznamskem polju in nato pritisnite Vnesite tipko, da jo vnesete v besedilno polje.
Sorodni članki:
- Kako samodejno izbrati besedilo v besedilnem polju, ko je izbrano v Excelu?
- Kako počistiti vsebino besedilnega polja ob kliku v Excelu?
- Kako združiti besedila več celic v besedilno polje v Excelu?
- Kako onemogočiti urejanje v besedilnem polju, da preprečite vnos uporabnika v Excelu?
- Kako oblikovati besedilno polje v odstotkih v Excelu?
Najboljša pisarniška orodja za produktivnost
Napolnite svoje Excelove spretnosti s Kutools za Excel in izkusite učinkovitost kot še nikoli prej. Kutools za Excel ponuja več kot 300 naprednih funkcij za povečanje produktivnosti in prihranek časa. Kliknite tukaj, če želite pridobiti funkcijo, ki jo najbolj potrebujete...
Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo
- Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
- Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
- Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!