Skip to main content

Excel'de yazarken bir metin kutusunu otomatik tamamlamak nasıl yapılır?

Author: Siluvia Last Modified: 2025-08-07

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:

click to insert Text Box

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:

click to insert List Box

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.

click View Code from right click menu

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

go to References dialog box and check Microsoft Scripting Runtime

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:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

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:

En İyi Ofis Verimlilik Araçları

🤖 Kutools AI Asistanı: Veriye dayalı analizi devrimsel olarak değiştirin: Akıllı Yürütme |Kod Oluştur |Özel Formüller Oluştur |Verileri Analiz Edin ve Grafikler Oluşturun |Geliştirilmiş İşlevler’i çağırın
Popüler Özellikler: Yinelenenleri Bul, Vurgula veya İşaretle | Boş Satırları Sil | Sütunları veya Hücreleri Verileri Kaybetmeden Birleştir | Formül Olmadan Yuvarla...
Süper ARA: Çoklu Kriter VLookup | Çoklu Değer VLookup | Çoklu sayfa araması | Bulanık Eşleme....
Gelişmiş Açılır Liste: Hızlıca Açılır Liste Oluşturun | Bağımlı Açılır Liste | Çoklu Seçimli Açılır Liste....
Sütun Yöneticisi: Belirli Sayıda Sütun Ekle | Sütunları Taşı | Gizli Sütunların Görünürlük Durumunu Değiştir | Aralıkları & Sütunları Karşılaştır...
Özel Seçilen Özellikler: Izgara Odaklama | Tasarım Görünümü | Gelişmiş formül çubuğu | Çalışma Kitabı & Çalışma Sayfası Yöneticisi | Otomatik Metin Kütüphanesi | Tarih Seçici | Veri Birleştir | Hücreleri Şifrele/Şifre Çöz | Listeye Göre E-posta Gönder | Süper Filtre | Özel Filtre (kalın/italik/üstü çizili filtreleme...)...
En Gözde15 Araç Seti:12 Metin Aracı (Metin Ekle, Belirli Karakterleri Sil, ...) | 50+ Grafik Türü (Gantt Grafiği, ...) | 40+ Pratik Formül (Doğum tarihine dayanarak yaş hesapla, ...) | 19 Ekleme Aracı (QR Kodu Ekle, Yoldan Resim Ekle, ...) | 12 Dönüşüm Aracı (Kelimeye Dönüştür, Para Birimi Dönüştürme, ...) | 7 Birleştir & Böl Araçları (Gelişmiş Satırları Birleştir, Hücreleri Böl, ...) | ... ve daha fazlası
Kutools’u tercih ettiğiniz dilde kullanın – İngilizce, İspanyolca, Almanca, Fransızca, Çince ve40’tan fazla başka dili destekler!

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!