fout bij vergelijken van twee strings

Status
Niet open voor verdere reacties.

dadio25

Gebruiker
Lid geworden
17 mrt 2009
Berichten
39
Hallo

ik dacht dat het vergelijken van twee strings was opgelost, maar heb nu weer iets gevonden.

Ik gebruik
Code:
If InStr(nieuwepositie, comparestring) = 1 Then

maar als nieuwepositie "_Date_Day" is en de comparestring is "_ClientCount" dan geeft dit ook de waarde 1 terug terwijl dit niet zo moet zijn.

Nu is hier de comparestring groter dan de string nieuwepositie en dat kan idd voorkomen.

Hoe zou ik dit het beste kunnen oplossen. Kan ik aan die If statement nog iets toevoegen om de bijv de lengte avn die twee strings met elkaar te vergelijken??

zoiets als

Code:
If InStr(nieuwepositie, comparestring) = 1 And (Len(nieuwepositie) > Len(comparestring)) Then

Of heeft iemand een betere suggestie??

groeten dadio25
 
Laatst bewerkt:
Dan heb je wel een heel exotische VBA-versie.

c0 = InStr("_Date_Day", "_ClientCount") geeft bij mij gewoon 0, zoals het hoort.
check je code, loop hem stapsgewijs door met F8 en maak gebruik van de foutopsporingsfaciliteiten van de VBEditor.
 
Ik heb het met F8 doorgelopen en als deze vergelijking kwam dan gebeurde wat ik eerder beschreven had. dan geeft het waarde 1. Ik snap eigenlijk niet goed waarom dit gedaan wordt aangezien als jij het probeert er de waarde 0 uitkomt.

Hmmm ik vind het heel vreemd allemaal.
 
Probeer dit eens, dan zie je het resultaat van de funktie Instr in de melding

Code:
Sub tst()
  MsgBox Replace("het resultaat van InStr(|_Date_Day|,|_ClientCount|) =", "|", Chr(34)) & InStr("_Date_Day", "_ClientCount")
End Sub
 
Hmmm,

Dan krijg ik wel dat de waarde 0 is. Terwijl er daarvoor de waarde 1 werd meegegeven heel raar allemaal. En nu lijkt het ook te werken.

Heb gelijk weer een probleem gevonden zeer frustrerend.

Als nieuwestring "_Date_Day" is en comparestring is "_Date" wordt ook de waarde 1 meegegeven nu en dit klopt ook aangezien het begin idd begint met _Date, Hiervoor moet ik denk wel de lengtes met elkaar vergelijken. Of weet jij een betere oplossing?

En het zelfde probleem heb ik als ik probeer die nieuwestring te verkleinen. "_Date_Day" wordt volgens mij dan als 2 afzonderlijke woorden gezien en als ik dan Len gebruik wordt alleen het eerste woord geteld. Dit is met F8 ook te zien. Len heeft dan als waarde 5 ipv de 9 die het eigenlijk moet zijn.

Code:
comparestring = "" + Mid(nieuwepositie, (Len(comparestring) + 2))

Dit gebruik ik hiervoor. De "_Date"wordt dan weggehaald. En "Day" blijft dan staan. De +2 die je bij Len zie staan is om te zorgen dat de punt elke keer ook weggehaald wordt. Dus ik haal eigenlijk de comparestring eruit en de "."die erachter staat.

groeten dadio25
 
Hmmm,

De functie Len() bij "_Date_Day" geeft als waarde 5. Dus ik probeerde om LenB() te gebruiken. Dit werkt om de string te verkleinen een stuk beter gelukkig. Dus dat is opgelost.

Nu probeer ik het op te lossen in de InStr functie alleen daar heb ik wat meer moeite mee.

Aangezien ik rekening moet houden met wat nieuwepositie voor waardes kan krijgen.

Als het alleen "_Date_Day" ofzo zou zijn dan zou het makkelijk zijn dan zou ik ook als voorwaarde stellen dat de beide LenB() gelijk moeten zijn.

Maar nieuwepositie kan ook "_System._EnableDiagnostics" zijn terwijl de comparestring dan de waarde "_System" moet hebben om de Instr de waarde 1 te geven. De beide LenB() zijn in dit geval ongelijk.

Dus hier moet ook aangedacht worden. Verschil tussen de twee is voornamelijk dat het eerste voorbeeld al het item is dat je moet hebben. Bij de tweede moet ik nog een level naar beneden gaan om bij het uiteindelijk item te komen. Hierdoor staat er in de string een extra karakter namelijk een "." Ik zit er over te denken om dit feit te gebruiken. Ik weet alleen nog niet hoe eigenlijk.

Iemand een idee?? De mijne zijn een beetje op. Heb eigenlijk ook niet echt veel verstand van VB(A) En jammer genoeg merk ik dit enorm. en jullie ook wel denk ik.

groeten dadio25
 
Dan luidt het advies: begin bij het begin en neem eens een goed boek over VBA door.
 
hmmm dat snap ik,

Maar daar heb ik eigenlijk geen tijd voor joh ben zeer tijdsgebonden. Maar tot nog toe lukt het me vrij aardig. en ik denk dat ik het heb opgelost het vorige probleem.

maar iig hartstikke bedankt voor je hulp :thumb:. Zonder dat was ik niet zover gekomen.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan