2013-03-23 19 views

cevap

269

Eğer bulunamazsa

dönecektir pos içinde 15 dönecektir Instr fonksiyonunu

Dim pos As Integer 

pos = InStr("find the comma, in the string", ",") 

kullanın =FIND(",";A1) işlevi.

Bir dizenin büyük/küçük harf duyarsız konumunu bulmak için Instr kullanmak istiyorsanız, Instr üçüncü parametresini kullanın ve const vbTextCompare (ya da sadece 1 kalıp kalıpları için) verin. karşılaştırırsanız başlangıç ​​argümanı gereklidir belirtilir:

Dim posOf_A As Integer 

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare) 

size ben bağlantılı şartnamede belirtildiği gibi bu durumda başlangıç ​​pozisyonunu belirlemek zorunda 14.

Not değerini verecektir.

+2

Ancak, bulunan dize 0 konumundaysa ne olur? "0 dizininde bulunan" ile "bulunamadı (0)" arasında nasıl ayrım yaparsınız? – gEdringer

+6

@ gEdringer. Bulunacak dize başlangıçta olduğunda 1 değerini döndürür. – rene

18

Orada da bir şey aynı tür yapar InStrRev işlevidir, fakat başlarına metnin sonundan aramaya başlar. @ Rene'nin cevap Başına

...

Dim pos As Integer 
pos = InStrRev("find the comma, in the string", ",") 

... hala poz 15 döner ancak ediyorum dize kelime gibi arama dizesi birden fazlasını varsa "", o zaman:

Dim pos As Integer 
pos = InStrRev("find the comma, in the string", "the") 

... yerine, pos için 20 dönecekti 6.

15
, ayrıca im olmasaydı alt dize mevcuttu, DOĞRU veya YANLIŞ döndü bir fonksiyon yazabiliriz Yapı Rene'nin yanıta

't:

Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean 
'Purpose: Returns TRUE if one string exists within another 
On Error GoTo ErrorMessage 
    Contains = InStr(strBaseString, strSearchTerm) 
Exit Function 
ErrorMessage: 
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error" 
End 
End Function 
+2

Bu işlevde ne tür bir veritabanı hatası bekliyoruz? Hata yakalama ve hata mesajı tamamen anlamsız görünüyor. –

+7

@RoobieNuby Bu sadece benim varsayılan hata işleme. Tüm işlevlerime koydum çünkü eğer bir şeyler ters giderse, personelin beni aramasını, denemeyi ve tamir etmemesini istiyorum. – BFWebAdmin

38

Ayrıca özel kelimeyi like kullanabilirsiniz: sizin için

Public Sub Search() 
    If "My Big String with, in the middle" Like "*,*" Then 
    Debug.Print ("Found ','") 
    End If 
End Sub 
+2

Desen biçimine bağlantı https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx?f=255&MSPPError=-2147217396 –

İlgili konular