Bir Dizedeki Metni Bul (INSTR İşlevi) - VBA Kodu Örnekleri

INSTR İşlevi

VBA Instr İşlevi, başka bir metin dizesinde bir metin dizesinin bulunup bulunmadığını kontrol eder. Metin bulunamazsa 0 döndürür. Aksi takdirde, metnin bulunduğu karakter konumunu döndürür.

Instr İşlevi şunları gerçekleştirir: bire bir aynı maçlar. VBA Like Operator, Wildcard'ları kullanarak tam olmayan eşleşmeler / desen eşleştirmesi yapmak için bunun yerine kullanılabilir.

Örn.

Aşağıdaki kod parçacığı, "Bu dizeye bak" dizesinde "Bak" sözcüğünü arar. Metin ilk konumda bulunduğu için Instr İşlevi 1 değerini döndürür.

123 Alt FindSomeText()MsgBox InStr("Bu diziye bak", "Bak")Alt Bitiş

Bu ikinci örnek, metin 7. konumdan başlayarak bulunduğu için 7 değerini döndürür:

123 Alt FindSomeText2()MsgBox InStr("Bu diziye bakma", "Bak")Alt Bitiş

Önemli! Instr İşlevi harfe duyarlı varsayılan olarak. Bu, "bak"ın "Bak" ile eşleşmeyeceği anlamına gelir. Testi büyük/küçük harfe duyarsız hale getirmek için aşağıda okuyun.

Instr Sözdizimi

Instr işlevinin sözdizimi aşağıdaki gibidir:

1 Instr( [başlangıç], dize, alt dize, [karşılaştır])

[başlangıç] (isteğe bağlı) - Bu isteğe bağlı argüman, aramanın başlangıç ​​konumudur. 1. konumdan aramaya başlamak için 1 girin (veya boş bırakın). 5 konumundan aramaya başlamak için 5 girin. Önemli! INSTR işlevi, 1'den sayarak karakter konumunu hesaplar. [başlangıç] konumundan DEĞİL.

sicim - Aranacak metin dizisi.

alt dize - Birincil dizede bulunacak metin dizesi.

[karşılaştır] (isteğe bağlı) - Varsayılan olarak Instr, büyük/küçük harfe duyarlıdır. Bu argümanı ayarlayarak Instr Case'i duyarsız hale getirebilirsiniz:

Argüman vb Değer

bağımsız değişken tamsayı Açıklama
vbBinaryCompare

0

(Varsayılan) Büyük/küçük harfe duyarlı

vbTextCompare

1

Büyük küçük harf duyarlı değil

vbDatabaseKarşılaştır

2

Yalnızca MS Erişimi. Karşılaştırma yapmak için veritabanındaki bilgileri kullanır.

Instr Başlangıç ​​Konumu

Instr başlangıç ​​konumu, aramaya başlayacağınız karakter konumunu belirtmenize olanak tanır. Ancak, Instr çıktısının her zaman 1'den sayılacağını unutmayın.

Burada ilk B'yi atlamak için başlangıç ​​konumunu 3'e ayarladık:

123 Alt Instr_StartPosition()MsgBox InStr(3, "ABC ABC", "B")Alt Bitiş

Sonuç 6'dır çünkü ikinci B, dizedeki 6. karakterdir.

Büyük/küçük harfe duyarsız INSTR Testi

Varsayılan olarak VBA, “L”ye “l”den farklı davranır. Başka bir deyişle, VBA büyük/küçük harfe duyarlıdır. Bu, tüm metin işlevleri için geçerlidir. VBA'yı büyük/küçük harfe duyarlı hale getirmek için [karşılaştır] bağımsız değişkenini 1 veya vbTextCompare olarak ayarlayın.

123 Genel Alt FindText_IgnoreCase()MsgBox InStr(1, "Bu dizeye bakma", "bak", vbTextCompare)Alt Bitiş

Alternatif olarak, kod modülünüzün üstüne Seçenek Karşılaştırma Metni ekleyebilirsiniz:

1 Seçenek Metni Karşılaştır
12345 Seçenek Metni KarşılaştırGenel Alt FindText_IgnoreCase2()MsgBox InStr("Bu diziye bakma", "bak")Alt Bitiş

Metni Karşılaştır seçeneği, o modüldeki tüm kodu etkiler. Bunu metinle ilgilenen herhangi bir modülün en üstüne koyuyorum çünkü büyük/küçük harf farklarını asla umursamıyorum.

InstrRev İşlevi

Instr İşlevi soldan arama yapar. Bunun yerine InstrRev İşlevini kullanarak sağdan arama yapabilirsiniz. InstrRev İşlevi, Instr işlevine çok benzer şekilde çalışır.

123 Alt FindSomeText_FromRight()MsgBox InStrRev("Bu diziye bak", "Bak")Alt Bitiş

Tıpkı Instr işlevi gibi bu da 1 değerini döndürür, çünkü metinde yalnızca bir "Bak" örneği vardır. Ancak ikinci bir "Bak" eklersek, en sağdaki "Bak" konumunu döndürdüğünü göreceksiniz:

123 Alt FindSomeText_FromRight()MsgBox InStrRev("Bu diziye bak Bak", "Bak")Alt Bitiş

Şimdi daha fazla Instr örneğini inceleyeceğiz.

Dize İçi Örnekler

Dize Alt Dize İçeriyorsa

Burada, bir dizenin bir metin alt dizesi içerip içermediğini test etmek için bir If ifadesi kullanacağız:

123456789 Genel Alt FindSomeText()InStr("Bu dizeye bak", "bak") = 0 iseMsgBox "Eşleşme yok"BaşkaMsgBox "En az bir eşleşme"BitirAlt Bitiş

Hücredeki Metin Dizesini Bul

Bir hücrede bir dize de bulabilirsiniz:

12345 Alt Find_String_Cell()If InStr(Range("B2").Value, "Dr.") > 0 O zamanAralık("C2").Value = "Doktor"BitirAlt Bitiş

Veya hücrelerin metin içerip içermediğini test etmek için bir dizi hücre arasında dolaşın:

12345678910 Alt Search_Range_For_Text()Aralık olarak hücreyi karartAralıktaki Her Hücre İçin("b2:b6")InStr(cell.Value, "Dr.") > 0 isecell.Offset(0, 1).Value = "Doktor"BitirSonraki hücreAlt Bitiş

Bir Dizedeki Bir Karakterin Konumunu Bul

Bu kod, bir dizedeki tek bir karakterin konumunu bulur ve konumu bir değişkene atar:

1234 Alt Find_Char()Dim n Uzunn = InStr("Buraya Bakın", "L")Alt Bitiş

Word için Arama Dizesi

Bu kod, bir kelime için bir dize arayacaktır:

12345678910 Alt Search_String_For_Word()Dim n Uzunn = InStr("Buraya Bak", "Bak")n = 0 iseMsgBox "Kelime bulunamadı"BaşkaMsgBox "Kelime konumunda bulundu: " & nBitirAlt Bitiş

Değişken Dize İçeriyorsa

Bu kod, bir dize değişkeninin bir metin dizesi içerip içermediğini test eder:

12345678 Alt Değişken_Contains_String()Dim str As Stringstr = "Buraya Bakın"InStr(str, "Burada") > 0 iseMsgBox "İşte bulundu!"BitirAlt Bitiş

Instr ve Sol İşlev

Instr, metni kırpmak için Sol, Sağ, Uzun Boy ve Orta gibi diğer metin işlevleriyle birlikte kullanılabilir.

Sol işleviyle, bir metin dizesinden önce metnin çıktısını alabilirsiniz:

1234567891011 Alt Instr_Left()Dim str As StringDim n Uzunstr = "Buraya Bak"n = InStr(str, "Burada")MsgBox Sol(str, n - 1)Alt Bitiş

Microsoft Access VBA'da Instr'yi Kullanma

Yukarıdaki örneklerin tümü, Access VBA'da Excel VBA'dakiyle tamamen aynı şekilde çalışır.

Daha fazla bilgi edinmek için makalemizi okuyun: VBA metin işlevleri

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave