Jak automatycznie uzupełniać pole tekstowe podczas pisania w programie Excel?
Domyślnie program Excel może zapamiętać, co wprowadziłeś w komórkach bieżącego arkusza roboczego i automatycznie uzupełnić tę zawartość następnym razem, gdy wpisujesz powiązaną pierwszą literę w nowej komórce. Jeśli jednak chcesz, aby cała zawartość wprowadzona w arkuszu była automatycznie uzupełniana w polu tekstowym (formant ActiveX), jak możesz to zrobić? W tym artykule znajdziesz metodę VBA, która pomoże Ci automatycznie uzupełnić pole tekstowe podczas wpisywania pierwszej litery w środku.
Autouzupełnianie pola tekstowego podczas pisania za pomocą kodu VBA
Autouzupełnianie pola tekstowego podczas pisania za pomocą kodu VBA
Wykonaj następujące czynności, aby pole tekstowe było uzupełniane automatycznie podczas wpisywania pierwszej litery w polu tekstowym.
1. Wstaw pole tekstowe, klikając Deweloper > wstawka > Pole tekstowe (formant ActiveX). Zobacz zrzut ekranu:
2. A następnie kliknij Deweloper > wstawka > Pole listy (formant ActiveX) aby wstawić pole listy do bieżącego arkusza roboczego. Zobacz zrzut ekranu:
3. Kliknij kartę arkusza prawym przyciskiem myszy, a następnie kliknij Wyświetl kod z menu kontekstowego, jak pokazano poniżej.
4. w Microsoft Visual Basic for Applications należy skopiować i wkleić poniższy kod VBA do okna Kod. A następnie kliknij Tools > Referencje, a następnie sprawdź Środowisko wykonawcze skryptów firmy Microsoft Microsoft Okno w Referencje - VBAProject Okno dialogowe. Zobacz zrzut ekranu:
Kod VBA: autouzupełnianie pola tekstowego podczas pisania
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
Note: W kodzie Pole listy1 i Pole tekstowe 1 to nazwa pola listy i pola tekstowego wstawionego do arkusza.
5. wciśnij inny + Q klawisze, aby wyjść z Microsoft Visual Basic for Applications okno.
6. Wyłącz tryb projektowania, klikając Deweloper > Tryb projektowania w arkuszu.
7. Teraz przejdź do innego arkusza, a następnie wróć do poprzedniego arkusza, aby włączyć kod VBA.
Od teraz. Podczas wpisywania pierwszej litery w polu tekstowym, wszystkie teksty zaczynające się na tę literę, którą wprowadziłeś do arkusza, zostaną wyświetlone w polu listy, które znajduje się po prawej stronie pola tekstowego. Kliknij dwukrotnie potrzebny, aby wprowadzić go w polu tekstowym. Zobacz zrzut ekranu:
Note: Możesz użyć Up or Pobierz klawisz strzałki, aby poruszać się między wszystkimi tekstami autouzupełniania w polu listy, a następnie naciśnij klawisz Wchodzę klawisz, aby wprowadzić potrzebny numer w polu tekstowym.
Podobne artykuły:
- Jak automatycznie zaznaczyć tekst pola tekstowego, gdy jest on wybrany w programie Excel?
- Jak wyczyścić zawartość pola tekstowego po kliknięciu w programie Excel?
- Jak połączyć teksty wielu komórek w pole tekstowe w programie Excel?
- Jak wyłączyć edycję w polu tekstowym, aby uniemożliwić wprowadzanie danych przez użytkownika w programie Excel?
- Jak sformatować pole tekstowe jako procent w programie Excel?
Najlepsze narzędzia biurowe
Zwiększ swoje umiejętności Excela dzięki Kutools for Excel i doświadcz wydajności jak nigdy dotąd. Kutools dla programu Excel oferuje ponad 300 zaawansowanych funkcji zwiększających produktywność i oszczędzających czas. Kliknij tutaj, aby uzyskać funkcję, której najbardziej potrzebujesz...
Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę
- Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
- Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
- Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!