• 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 Loop functie

Status
Niet open voor verdere reacties.

joerinicolaes

Nieuwe gebruiker
Lid geworden
13 jan 2017
Berichten
3
Voor het berekenen van een product reek moet ik de minimaal benodigde diameter van een pin berekenen.

De standaard formule hiervoor is: MRd > MEd. Met MRd = ((3.14 * d ^ 3) / 32 ) * f

Ik wil de minimale diameter (d) bepalen door middel van een functie in excel. Daarvoor heb ik de volgende VBA code gebruikt.

###
Public Function d(MEd, f)
step = 0.1
i = 0
MRd = 0
Do Until MRd > MEd
d = i
MRd = (((3.14 * d ^ 3) / 32) * f) * 10 ^ -6
i = i + step
Loop
d = (i - 1 * step)
End Function
###

Tot zo ver geen problemen.

Echter nu wil in formule iets anders schrijven: MEd/ MRd > 1. Hiervoor heb ik de volgende VBA code gebruikt:

###
Public Function d(MEd, f)
step = 0.1
i = 0
UC = 0
Do Until (MEd / MRd) > 1
d = i
MRd = ((((3.14 * d ^ 3) / 32) * f) * 10 ^ -6)
i = i + step
Loop
d = (i - 1 * step)
End Function
###

Bij deze invoer, krijg ik geen resultaat. Iemand enig idee wat ik fout doe?

Bij voorbaat bedankt.

Joeri
 
Zonder te testen: MRd is bij aanvang van je berekening leeg of nul. Hierdoor gaat MEd/MRd niet goed.
 
Terugkomend op mijn vorige vraag.

Voor het berekenen van de minimaal benodigde plaatdikte (dt), heb ik de volgende VBA code gemaakt.

'Minimum thickness of bearing plate
Public Function dt(MEd, VEd, w, fy)
step = 0.1
dt = 0.1
sEd = 0.1
tEd = 0.1
Do Until (((sEd ^ 2 + 3 * tEd ^ 2) ^ 0.5) / fy) < 1
sEd = MEd / Wel
tEd = (1.5 * VEd) / A
Wel = 1 / 6 * w * dt ^ 2
A = w * dt
dt = dt + step
Loop
dt = dt - 1 * step
End Function

Bij deze functie krijg ik geen resultaat. Iemand enig idee wat ik fout doe?

Bij voorbaat bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan