• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

vba afronden

Status
Niet open voor verdere reacties.

tobo100

Gebruiker
Lid geworden
14 okt 2013
Berichten
153
hallo allemaal

ik ben opzoek naar een vba code die de waarden in een sheet Range om kan zetten naar heel getal
vast bedankt voor het mee denken

vr gr tobo



0,500000000000001 ====> 0.5
0,249999999999999 ====> 0.25
0,749999999999999 ====> 0.75
0,999999999999999 ====> 1
 
Met:
Code:
application.mround(cl, 0.25)
 
Of:
Round(val, 2)
 
het leek redelijk te werken maar er staat ook tekst tussen
er zal dus nog iets tussen moeten van is numeric ?

Code:
For Each cell In [A1:A5]    'range
  If cell = "" Then Exit Sub
  cell.Value = Round(cell / 0.25, 0) * 0.25
  'cell.Value = Round(cell, 2)
   Next cell
 
Laatst bewerkt:
Round is een rekenfunctie, dus voor numerieke waarden. Dat werkt niet redelijk, dat werkt goed.
Doe het eens zo:
Code:
For Each cell In [A1:A5]
  If Not IsNumeric(cell) Then Exit Sub
  cell.Value = Round(cell / 0.25, 0) * 0.25
Next cell

Voorkom ook het gebruik van correcte Engelse woorden als variabele.
Gebruik dus als variabele niet cell maar bijvoorbeeld cCell of Cel.
 
met deze code sla ik de txt gevulde cellen over
ja weetje ed voor mij is dit abracadabra ik google wat en als ik er niet uit kom vraag ik even hier op de site
ik vraag geen kant en klare oplossingen maar probeer er door uren lange zoek tochten wat van op te steken:shocked:
wat denkje er tot zo ver van, is dit n goede oplossing ?

Code:
 For Each cel In [A1:g67]    'range
  If cel = "" Then Exit Sub
  If IsNumeric(cel) = True Then
  cel.Value = Round(cel / 0.25, 0) * 0.25
  Else
  End If
  Next cel
 
Laatst bewerkt:
Mijn voorbeeldje in #5 is een stuk korter, hoewel je niets verkeerd doet, doe je wel een aantal overbodige dingen.
Wat betreft abracadabra, dat is de reden waarom ik die tip over correcte Engelse woorden gaf :)
 
Als bv uw A2 een tekst of lege cel bevat, stopt uw macro.
Deze loopt alle cellen af:

Code:
For Each cel In [A1:g67]    'range
  If NOT cel = "" AND IsNumeric(cel) Then
    cel.Value = Round(cel / 0.25, 0) * 0.25
   End If
Next cel
 
nou super werkt perfect zo bedankt voor het voorbeeld en de tips
jij ook bedankt Cobbe jou code ga ik gebruiken !
 
Laatst bewerkt:
Houd er rekening mee dat de VBA round-functie gebaseerd is op het afrondingssysteem 'bankers rounding'. Dat is afwijkend van wat wij meestal gebruiken en dat kan daarom onverwachte resultaten geven. Als het getal eindigt op een 5 dan wordt dit altijd afgerond op een even getal. Bijvoorbeeld 1,35 en 1,45 worden in dit systeem beide afgerond naar 1,4.
 
Laatst bewerkt:
ok dankjewel rebmog ik had alleen waarden als:
0,500000000000001 ====> 0.5
0,249999999999999 ====> 0.25
0,749999999999999 ====> 0.75
0,999999999999999 ====> 1

afkomstig uit naar tijdwaarde geconverteerd naar decimaal
ik denk dat het voor mij zo wel ok is
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan