Excel'de yazarken bir metin kutusunu otomatik tamamlamak nasıl yapılır?
Varsayılan olarak, Excel, geçerli çalışma sayfasındaki hücrelere girdiğiniz verileri hatırlayabilir ve bir sonraki sefere yeni bir hücreye ilgili bir başlangıç harfi yazdığınızda bu içeriği otomatik tamamlayabilir. Ancak, çalışma sayfasına girdiğiniz tüm içeriklerin bir metin kutusunda (ActiveX Kontrolü) otomatik tamamlanmasını isterseniz, bunu nasıl yapabilirsiniz? Bu makale, size yazarken bir metin kutusunu otomatik tamamlamanıza yardımcı olacak bir VBA yöntemi sağlayacaktır.
VBA kodu ile yazarken bir metin kutusunu otomatik tamamlama
VBA kodu ile yazarken bir metin kutusunu otomatik tamamlama
Lütfen bir metin kutusuna başlangıç harfi yazdığınızda otomatik tamamlama yapmak için aşağıdaki adımları izleyin.
1. Lütfen Geliştirici > Ekle > Metin Kutusu (ActiveX Kontrolü) öğesine tıklayarak bir metin kutusu ekleyin. Ekran görüntüsüne bakın:
2. Ve ardından Geliştirici > Ekle > Liste Kutusu (ActiveX Kontrolü) öğesine tıklayarak geçerli çalışma sayfasına bir liste kutusu ekleyin. Ekran görüntüsüne bakın:
3. Sayfa sekmesine sağ tıklayın, ardından aşağıdaki ekran görüntüsünde gösterildiği gibi bağlam menüsünden Kodu Görüntüle'yi tıklayın.
4. Microsoft Visual Basic for Applications penceresinde lütfen aşağıdaki VBA kodunu Kod penceresine kopyalayıp yapıştırın. Ardından Araçlar > Referanslar'a tıklayın ve Referanslar – VBAProject iletişim kutusunda Microsoft Scripting Runtime kutucuğunu işaretleyin. Ekran görüntüsüne bakın:
VBA kodu: Yazarken bir metin kutusunu otomatik tamamlama
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
Not: Kodda, ListBox1 ve Textbox1, çalışma sayfanıza eklediğiniz liste kutusu ve metin kutusunun adıdır.
5. Microsoft Visual Basic for Applications penceresini kapatmak için Alt + Q tuşlarına basın.
6. Çalışma sayfasında Geliştirici > Tasarım Modu'na tıklayarak Tasarım Modunu kapatın.
7. Şimdi başka bir çalışma sayfasına geçin ve daha sonra VBA kodunu etkinleştirmek için önceki çalışma sayfasına geri dönün.
Bundan böyle. Bir metin kutusuna başlangıç harfi girdiğinizde, çalışma sayfasına girdiğiniz harfle başlayan tüm metinler, metin kutusunun sağ tarafında bulunan liste kutusunda listelenecektir. Lütfen ihtiyacınız olanı çift tıklayarak metin kutusuna girin. Ekran görüntüsüne bakın:
Not: Liste kutusundaki tüm otomatik tamamlama metinleri arasında hareket etmek için Yukarı veya Aşağı ok tuşunu kullanabilir ve ardından gerekli olanı metin kutusuna girmek için Enter tuşuna basabilirsiniz.
İlgili makaleler:
- Excel'de seçildiğinde bir metin kutusunun metnini otomatik olarak seçmek nasıl yapılır?
- Excel'de tıklandığında bir metin kutusunun içeriğini temizlemek nasıl yapılır?
- Excel'de birden fazla hücrenin metnini bir metin kutusunda birleştirmek nasıl yapılır?
- Excel'de kullanıcı girişini önlemek için bir metin kutusunda düzenleme işlemini devre dışı bırakmak nasıl yapılır?
- Excel'de bir metin kutusunu yüzde olarak biçimlendirmek nasıl yapılır?
En İyi Ofis Verimlilik Araçları
Kutools for Excel ile Excel becerilerinizi güçlendirin, daha önce hiç yaşamadığınız bir verimlilik deneyimini yaşayın. Kutools for Excel, üretkenliğinizi artıracak ve zamanı kaydetmenizi sağlayacak300’den fazla gelişmiş özellik sunar. En çok ihtiyaç duyduğunuz özelliği almak için buraya tıklayın...
Office Tab, Office’e sekmeli arayüz kazandırır ve işinizi çok daha kolaylaştırır
- Word, Excel, PowerPoint’te sekmeli düzenleme ve okuma işlevini etkinleştirin.
- Aynı pencere içerisinde yeni sekmelerde birden fazla belge açın veya oluşturun, yeni pencerelerde açmak yerine.
- Verimliliğinizi %50 artırın, her gün yüzlerce fare tıklamasını sizin için azaltın!