Dag Johan,
Het is, zoals je waarschijnlijk zelf al geconcludeerd hebt, weer de schuld van Microsoft die met zijn "afronden"-functie op het werkblad iets anders doet dan met "round" in vba als een getal op een 5 eindigt, en je bijgevolg genoodzaakt was gebruik te maken van een ergens op het Internet gevonden "RoundAbsHalfUp"-functie.
Maar goed, je bent eruit geraakt, en dat is wat telt. Een andere reden waarom het niet zou werken is ook geenszins te bedenken.
Anderzijds, ik heb het je vaker weten doen, (veel?) tijd spenderen om de lengte van je code zo extreem mogelijk in te korten. Een leuke hobby allicht, maar zelf zou ik vaak niet zo ver gaan: een prettig lezende code die even goed en even snel is geniet meestal mijn voorkeur.
Maar vermits dit niet over exacte wetenschap maar over smaak gaat speel ik graag mee, en dan valt het onmiddellijk op dat het nog een stukje korter kan, dus probeer misschien deze eens (uiteraard zonder aan x, y en z te raken):
For i = 0 To 2
ws.Cells(Irow, x(i)) = IIf(y(i), z(i), "")
Next i
Groeten,
pitufo