Joo... Mitenkäs saisin otettua tekstipoksista tietoa niin että se ei ota kaikkea sieltä... Eli ei esim.
if text1 = "lol"
Vaan niin että jos se teksti sisältää ton "lol"? Tajusikohan tota nyt kukaan...
InStr-funktiolla selviää tekstin sijainti merkkijonossa, ja Left- sekä Mid-funktioilla tekstistä saa karsittua osia. Tässä esimerkissä tekstistä poistetaan osa:
Dim teksti As String, pois As String Dim kohta As Integer, pituus As Integer 'koko teksti teksti = "Ohjelmointitämäpitääpoistaaputka" 'poistettava osa pois = "tämäpitääpoistaa" 'poistettavan osan sijainti tekstissä kohta = InStr(teksti, pois) 'poistettavan osan pituus pituus = Len(pois) 'jos poistettava osa on tekstissä... If kohta <> 0 Then '...muodostetaan uusi merkkijono ilman sitä teksti = Left(teksti, kohta - 1) & Mid(teksti, kohta + pituus) End If MsgBox teksti
Tässä on edelleen kehitetty koodinpätkä, joka poistaa tekstistä kaikki poistettavan sanan esiintymät eikä pelkästään ensimmäistä:
Dim teksti As String, pois As String Dim kohta As Integer, pituus As Integer teksti = "Ohjelmpoisointpoisiputka" pois = "pois" kohta = InStr(teksti, pois) pituus = Len(pois) While kohta <> 0 teksti = Left(teksti, kohta - 1) & Mid(teksti, kohta + pituus) kohta = InStr(teksti, pois) Wend MsgBox teksti
Lisää tietoa:
http://vb.ohjelmointiputka.net/?InStr
http://vb.ohjelmointiputka.net/?Left
http://vb.ohjelmointiputka.net/?Mid
Anteeksi huono kymysys... Tarkoitin että kun mulla on tekstipoksi jossa lukee vaikka "kelkkasuksimörkö" tai "kelkka + suksi + mörkö" tai mitä vaan... Niin miten saan esim. ehtolauseeseen sen niin että saan vaikkas pistelaskuriin lisättyä pisteen möröstä ja 2 kelkasta ja 3 suksesta... Tajusitteko yhteyden. Osaan kyllä sen piste homman tehdä mutta toi että miten sitä tulee tosta keskeltä tekstiä, onkin hankalampi.
if InStr("mörkö", etsittava) then pisteet = pisteet + 1 if InStr("kelkka", etsittava) then pisteet = pisteet + 2
Tollee?
No danke! Pitääs kokeilla toimiiko...
No nyt tolla toimii... Mutta ja iso mutta onkin. Se ei anna pisteita kun sillon jos tekstipoksi sisältää pelkästään jonkun noista... Esim. "mörkö" tjsp... Eli miten saisin sen antamaan niitä pisteitä jokaisesta niistä esim jos siinä on "mörkö + mörkö + pekka"?
I = 1 Do Until I = 0 I = InStr(I, "mörkö + mörkö + pekka", "mörkö") If I then pisteet = pisteet + 1 I = I + len("mörkö") end if Loop
Viittitkö pikkusen selittää mitä tossa tapahtuu kun olen hieman amatööri... Meinaan vaan että helpompi sit soveltaa... Niin ja kiitos!
InStr-funktion ekaparametri I määrää kohdan, josta haku aloitetaan. Eka kerralla I = 1 ja löytyy se ensimmäinen mörkö. Tämän jälkeen aloitetaan haku kohdasta 1 + 5 = 6, jolloin löytyy se toinen mörkö.
Siis ei toimi vieläkään... Ei mulla hyvin mee
Miksei muka toimi. Kopsaapa tohon vähän koodia.
Siis sen pitäs toimia niin, että vaikka siinä kentässä lukis mitä ni se poimii jokikisestä "mörkö" sanasta pisteen...
No juuri niinhän se toimiikin. Laita "mörkö + mörkö + pekka" tilalle se mitä hyvänsä ja sanan "mörkö" tilalle se mistä pisteitä annetaan niin se hakee ne kaikki.
No perhana, sori. Ymmärsin ihan väärin... Kiitos vaivasta!
Noh eipäs se sittenkään toiminunna...
I = 1 Do Until I = 0 I = InStr(I, "Text1.text", "kickflip") If I Then Text2 = Str(Val(Text2) + 1) I = I + Len("kickflip") End If Loop
Noin mä sen laitoin mutta mitään ei tapahdu. Missä vika?
Toimii
Aihe on jo aika vanha, joten et voi enää vastata siihen.