Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: List1 & Instr

tuomas [16.06.2004 11:19:29]

#

Miten saisin tarkistettua sisältääkö teksti kenttä list löytyvää tekstiä?

tämä toimii jo melkein:

Dim Sanat As String
    Sanat = Form3.List1.Columns
For i = 1 To form3.list1.listcount
   If Instr(text1.text,sanat) then
      'tähän tulee tapahtumat
   End If
next

Tuo toimii kyllä jos tekstikenttä sisältää pelkästään sanan
joka löytyy list1:stä (esim. moi!) mutta jos sanan perässä tai sitä ennen on jotain muutakin niin sitten ei toimi (esim. abcmoi!)

BadSource [16.06.2004 12:32:27]

#

Dim Sana As Integer, i As Integer
Dim Teksti As String

Teksti = Text1.Text

For i = 0 To Me.List1.ListCount - 1
    If InStr(1, Teksti, Me.List1.List(i)) Then Sana = Sana + 1
Next i
MsgBox "Sanoja löytyi:" & Sana

edit: Sisennys

tuomas [16.06.2004 16:36:25]

#

ei näyttäisi tuokaan toimivan ihan täydellisesti...
Esim jos list1 lukee "tätäsanaaeilöydy" niin tuo koodinpätkä ei löydä sitä seuraavan laisesta merkkijonosta: ".asdasd.tätäsanaaeilöydykahs.djh"

setä [16.06.2004 20:16:24]

#

Kyllä tuo InStr-funktio ainakin löytää sen. Mutta jos jokin sana esiintyy tekstissä useita kertoja löytyy vain se ensimmäinen.

BadSource [17.06.2004 06:18:00]

#

Vaihtaa If-rakenne Do-Loopiksi.

j=1
Do While InStr(j, Teksti, Me.List1.List(i))
   Sana = Sana + 1
   j = InStr(j, Teksti, Me.List1.List(i)) + 1
Loop

Kyse on kirjoitusvirheestä, mikäli InStr ei muka löydä merkkijonosta pätkää, jota se hakee.

tuomas [17.06.2004 08:15:13]

#

sain toimimaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta