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 tekstiTä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 tekstiLisää 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 + 2Tollee?
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
LoopViittitkö 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
LoopNoin mä sen laitoin mutta mitään ei tapahdu. Missä vika?
Toimii
Aihe on jo aika vanha, joten et voi enää vastata siihen.