InStr Problemen

Status
Niet open voor verdere reacties.

Youandih

Gebruiker
Lid geworden
24 apr 2013
Berichten
8
Hey, ik heb een probleempje met het InStr command.
Komt omdat ik het te lang niet meer gedaan heb.

Code:
Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
 xmlDoc.async = false 
 xmlDoc.load("http://xml.weather.com/weather/local/NLXX0002?cc=*&unit=M&dayf=1") 
 Set Condition = xmlDoc.selectsinglenode ("/weather/cc/t") 
 
If InStr(Condition.Text) = "Sunny" Then
 MsgBox("It's Sunny and Windy") 
 End If

Ik neem aan dat jullie begrijpen wat de bedoeling was? Wat doe ik fout?
 
Laatst bewerkt door een moderator:
Zoals ook op te maken is uit de msdn-link van edmoor, retourneert de InStr-functie een indexwaarde, een getal dus.

Dan kun je beter zoiets proberen:

[cpp]If Condition.Text.Contains("Sunny") Then[/cpp]
 
Toch.

Is toch gelukt:

[CPP]if inStr(Condition.Text, "Fair") Then
MsgBox("It's Shining!")
End If[/CPP]

Het is dus niet alleen met getallen ^^

Ik wist nml. dat ik hem idd al eerder als niet-getal heb gebruikt
 
Hij retourneert hier ook een getal hoor ;)
De waarde 0 wordt gezien als False en iedere andere waarde als True.
 
Raar

Dat is vaag.. Want bij mij werkt ie gewoon met tekst..
 
inStr(Condition.Text, "Fair") -> levert de waarde 0 of de index van de start van het woord 'Fair' in Condition.Text.
Als-ie dus niets kan vinden, levert dat '0' op.

If 0 Then -> wordt niet uitgevoerd
If Not 0 Then -> wordt wel uitgevoerd


If Condition.Text.Contains("Fair") Then zou dus hetzelfde opleveren

Dus je werkt wel met getallen ;)

Zet je de vraag ook even op opgelost?
 
Het gevaar dat je daarmee loopt is dat er een kans is dat er een False wordt terug gegeven wanneer de gezochte tekst begint op een even positie.
Gebruik functies zoals ze moeten worden gebruikt en niet een variatie erop die wel goed lijkt.
 
Tja

Dat is waar, ja. Maar dan heb ik alsnog een probleem, want Condition.Text.Contains werkte niet.
 
Dus wat doe ik fout? Dit is wat ik heb en hij geeft steeds "Object vereist: Condition.Text"

[CPP]Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load("http://xml.weather.com/weather/local/NLXX0002?cc=*&unit=M&dayf=1")
Set Condition = xmlDoc.selectsinglenode ("/weather/cc/t")
Set Sunset = xmlDoc.selectsinglenode ("/weather/dayf/day/suns")
Set Sunrise = xmlDoc.selectsinglenode ("/weather/dayf/day/sunr")

If Condition.Text.Contains("Fair") Then
MsgBox("It's Fair")
ElseIf Condition.Text.Contains("Sunny") Then
MsgBox("It's Sunny")
End If
[/CPP]
 
.Contains is geen onderdeel van Condition.Text
 
Oke, want JoZ1 schreef dat wel, en ik heb die functie nooit gebruikt, dus vandaar.
 
Sorry.
In VBA is die Contains geen onderdeel.
In VB weet ik het zo niet en zou ik een reactie van JoZ1 afwachten.
 
Contains is een method van String.

Probeer dit eens:

[cpp]If Condition.Text.ToString().Contains("Fair") Then ...[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan