Foutje in VBA fucntie?

Status
Niet open voor verdere reacties.

Royzilla

Gebruiker
Lid geworden
10 apr 2014
Berichten
187
Kan iemand mij misschien even helpen?
ik heb in het bestandje 2 test stukjes en daaronder een tabel rechtstreeks uit een ander bestand. Hoe komt het dat de functie wel werkt in de testjes en niet in m'n tabel?

Het gaat hier om de regel
90% = 90% 1 90.00% 1

En

20 90% = Monthly 90% 0 89% 0


boven geeft die wel een 1 achter de 90. Daaronder dan weer niet.
Zou iemand hier even naar willen kijken? Thanks!

Bekijk bijlage testOpgave (1).xlsm
 
Ik snap nog steeds de noodzaak niet van de eerste For..Next, want het kan echt zonder:
Code:
Public Function Opgave2(Doelstelling As Range, Gehaald As Range)
Dim tmp As Variant

    tmp = Split(Replace(Replace(Replace(Doelstelling, "%", ""), "(", ""), ")", ""), " ")
    Select Case tmp(UBound(tmp))
        Case ">="
            Opgave2 = IIf(Gehaald >= CDbl(tmp(LBound(tmp))) / 100, 1, 0)
        Case "<="
            Opgave2 = IIf(Gehaald <= CDbl(tmp(LBound(tmp))) / 100, 1, 0)
        Case "="
            Opgave2 = IIf(Gehaald = CDbl(tmp(LBound(tmp))) / 100, 1, 0)
    End Select
    
End Function
 
Goedemorgen,

Sorry dat ik niet meer hier naar gekeken had.
Het werkt inderdaad zoals je het stuurde.
Dankjewel voor dat completere stukje code!

Maar nu is mijn vraag:
Waarom geldt het niet als een target 90% moet zijn. en als een record dan 90% is moet het vakje ernaast groen worden.
Tot mijn verbazing werkt dat stukje wel in die 2 test tabellen.

Hoe kan ik dit oplossen?
 
Staan je celinstellingen wel goed? Bij mij deed hij het ook pas nadat ik de celopmaak van de werkende broncellen met de kwast Opmaak kopiëren naar de niet-werkende cellen had gekopieerd.
 
Het is best wel apart.
Ik gebruik in beide gevallen PRECIES dezelfde functie. Waarom werkt het dan wel in de ene tabel en niet in die eronder?

Ik heb het aangegeven met een vetgedrukte border om het stukje waar het om gaat.

De functie formule staat in de cellen:
F8 t/m F11 + H8 t/m H11.
&&
G13, G14 , I13 En I14.

Ik heb al vaker die formule opnieuw geprobeerd of andere formules werkend te krijgen. Als ik dan de target verander en een andere formule neerzet werkt het prima.

Misschien ligt het aan ' het kleine quotje die voor de tekst staat onder het kopje 'Doelstelling'. Heb al vaker geprobeerd het weg te halen maar dat werkt niet helemaal. Maar het aparte is. In de cellen van de test tabel. Staat ook dat tekentje. En daar werkt het wel. Best vreemd dit.

Bekijk bijlage testOpgave (1).xlsm
 
Code:
Public Function Opgave2(Doelstelling As Range, Gehaald As Range)
    Opgave2 = Abs(100 * Gehaald >= Val(Doelstelling))
End Function
 
Hee snb bedankt voor het meehelpen.

Dit stukje ziet er flink wat korter uit, maar zorgt voor hetzelfde effect.
Ik heb het toegepast op zowel de data dat in mijn huidige tabel komt als in de oefen tabellen.

De oefentabellen doen het perfect maar de huidige tabel niet.

Komt het dat misschien door het ' tekentje? dit krijg ik trouwens niet weg...
 
Zoals ik al zei: die cellen hebben een andere opmaak dan de overige cellen. Het ' teken zorgt er overigens voor dat alle input in de cel als tekst wordt gezien. Terwijl je dus met getallen werkt. Dus weghalen zorgt zonder meer voor een nieuwe situatie :)
 
UPDATE:

Als ik echt alles opnieuw invoer enzo in lege cellen. Werkt het nu wel. Ik snap het niet want ik vulde het Precies hetzelfde in.
Dat zal dan wel aan mij liggen :P

In ieder geval bedankt voor jullie hulp en het meedenken! Thanks voor de oplossingen :)
 
Beste Snb,

In het bestandje dat je upload, staat in de onderste tabel (definitieve tabel) 90% = als Doelstelling. de record staat in F14 90%. Dan hoort het vakje ernaast groen te worden met een 1 erin. Maar dit werkt dus op die manier wel in de oefentabel boven deze tabel.

Best vreemd.
 
De bekende afrondingsproblemen in Excel:

Code:
Public Function Opgave2(Doelstelling As Range, Gehaald As Range)
    Opgave2 = Abs(FormatNumber(100 * Gehaald.Value2, 2) >= FormatNumber(Val(Doelstelling.Value2), 2))
End Function
 
Met dit systeem dat ik wil werkt dat afronden niet naar mijn behoren.
Wat wel vreemd is is dit: Ik ben er achter gekomen wat fout was. De records worden gekopieerd en daarna geplakt in mijn raport. Aan de hand van de records wordt er gekeken of deze goed of fout is vergeleken met de Doelstellingen. Alles werkt Behalve die van de 90%.

Wat ik gedaan heb, is in de geplakte data van die doelstelling 90% op 'enter' drukken. Nu doet die het opeens wel. Maar als ik het opnieuw laat plakken is het weer zoals eerst op rood dus. Hoe zorg ik ervoor dat een cell geupdate wordt of iets dergelijks?
 
Code:
sheet1.usedrange=sheet1.usedrange.value2
 
Ik had het gister direct gekopieerd en erin geplakt, dat zorgde voor een paar foutjes, zou ik dit dan moeten doen.
(naamvansheet1).(OpgegevenRangeDieGekopieerdMoetWorden) = (naamvansheet1).(OpgegevenRangeDieGekopieerdMoetWorden) . Waarde?
 
Zou iemand even in het orginele bestand willen kijken? Dan stuur ik de geïnteresseerde in privé het bestandje even.

Er is ook een doelstelling <12.5% als een record 12.8% is zegt die dat het kleiner is dan de doelstelling omdat in de cel wordt het als een afronding neergezet.

Zou fijn zijn als iemand me hiermee wilt helpen dan leg ik alles even wat duidelijker uit.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan