Bu dosya, bir hücre aralığındaki öğelerin UserForm üzerindeki ListBox'ta listelenmesini ve metin kutusuna yazılan ifadeyle aranmasını gösteren makrolu bir örnektir. Üç farklı arama yöntemi aynı formda sunulur: yazdıkça arama, joker karakterli arama ve otomatik tamamlamalı arama.
Dosya makro içerir (.xlsm); açarken makroları etkinleştirmeniz gerekir.
Dosya makro içerir (.xlsm); açarken makroları etkinleştirmeniz gerekir.
Dosyanın içeriği
- ListBoxItems: C3:C27 aralığında "Main List of Items" başlığı ve altında ay adları (January, February, August, September, October, November) ile deneme amaçlı metinler bulunur. ListBox bu listeyi C4 hücresinden başlayarak okur.
- UserForm1: LBItemsToMatch adlı ListBox, TxtSearchFor ve TxtTypeAhead metin kutuları, iki arama düğmesi ve çıkış düğmesi (CmdExit) içerir.
Makrolar
- InitUserForm1: ListBoxItems sayfasını etkinleştirir, C4 hücresinden başlayan bölgenin satır sayısını bulur ve ListBox'ın RowSource özelliğine atayarak formu açar. Sayfadaki düğme bu makroyu çalıştırır.
- SearchForText: TxtSearchFor kutusuna yazılan her karakterde ListBox'ta eşleşen öğeye gider; ilk harf eşleşmezse seçimi listenin başına alır.
- WildCardSearch: TxtSearchFor içindeki metni öğelerin herhangi bir yerinde arar ve seçili öğeden sonraki ilk eşleşmeyi seçer. Eşleşme yoksa seçim kaldırılır ve uyarı sesi çalar.
- WildCardSearch2: Aynı mantıkla TxtTypeAhead kutusundaki metni arar; eşleşme yoksa ilk öğeye döner.
- TextTypeAhead: TxtTypeAhead kutusuna yazılan metinle başlayan ilk öğeyi seçer ve kalan karakterleri seçili halde ekleyerek metni otomatik tamamlar. Silme sırasında tamamlama yapılmaz.
- CmdExit_Click: Formu kapatır.
Kullanılan formüller
Çalışma sayfasında formül yoktur. Aramalar VBA içinde Application.Match fonksiyonuyla ve "*" joker karakteriyle yapılır; modüllerdeki Option Compare Text ifadesi sayesinde arama büyük/küçük harf ayrımı yapmaz.Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- ListBoxItems sayfasındaki düğmeye tıklayarak formu açın.
- Yazdıkça aramak için TxtSearchFor kutusuna metin yazın; otomatik tamamlama için TxtTypeAhead kutusunu kullanın.
- Metnin öğenin herhangi bir yerinde aranması için ilgili düğmeye basın; sonraki eşleşmeye geçmek için tekrar basın.
- Kendi listenizi kullanmak için C4 hücresinden itibaren aşağı doğru öğeleri yazın.