Du kan naturligvis også sætte fillængden = 100 og angive behandlet længde til en procentandel, hvis du foretrækker det i stedet for den reelle fillængde.
jeg har 2 tal og KUN 2 tal, det samlede procenttal for alle filer i behandling, og hvor mange filer der er.
det smalde procental bliver hentede udefra, og og jge ved hvor mange filer den udefra behandlede process behandler, det jeg vil er at finde ud af hvor langt den er nået med den enkelte fil.
og trode også jeg havde køst den.
eproc=100/2=50
divfac=nået/eproc=25/50=0,5
proc=nået/divfac=25/0,5=50=50% :)
divfac=nået/eproc=75/50=1.5
proc=nået/divfac=75/1.5=50=50% :)
divfac=nået/eproc=12,5/50=0,25
proc=nået/eproc=12,5/0,25=50=50% :(
så den formel duede ikke.
-------------------------------------------
det jeg skal finde ud af er hvor langt den eksteren process er nået med hver enekel fil, jeg ved hvor mange filer den behandler og jeg for samlde bahndlig tilbage
så 50% af behandlingen vil ved 2 filer svare til 100% af første fil. og 75% af behandlingen vil ved 2 filer savre til 50% af anden fil.
Sub BeregnFilProcenter(AntalFiler As Integer, BehandletPct As Integer) Dim PctAfNuvFil As Integer Dim NuvFilNr As Integer NuvFilNr = Int(AntalFiler * BehandletPct / 100 + 0.999) PctAfNuvFil = (BehandletPct - ((NuvFilNr - 1) / AntalFiler * 100)) * AntalFiler MsgBox "Behandlet " & CStr(PctAfNuvFil) & "% af fil nr. " & CStr(NuvFilNr), vbInformation, "Behandlingsstatus" End Sub
1) Nummeret på den fil der pt. behandles: Den opgivne procents andel af det samlede antal filer, oprundet til et helt tal.
Eks. Hvis der er 4 filer og der er behandlet 26%: 26% af 4 = 4 * 0,26 = 1,04 - oprundet til nærmeste hele tal bliver det 2
2) Den behandlede procentdel af fil 2:
Jeg finder ud af, hvor stor en procentdel af det samlede antal filer den allerede fuldt ud behandlede del udgør, dvs. hvis der er færdigbehandlet 1 fil, som i ovenstående tilfælde og det samlede antal filer stadig er 4, vil andelen af færdigbehandlede filer udgøre 1/4 = 1 * 100 / 4 % = 25%. Tilbage er altså 1%, som må være svaret.
... Tilbage er altså 1%, som dog skal ganges med det samlede antal filer, for den ene procent var jo oprindeligt fordelt over alle filer. Nu skal den repræsentere en andel af en enkelt fil, og bliver altså så meget desto større.
Du bruger Ceiling funktionen til at oprunde til nærmeste hele tal, og alligevel tillægger du 0.999 - det er en fejl, idet grunden til at jeg tillagde de nævnte 0.999 var, at VBA ikke har en Ceiling funktion, men ved at tillægge "næsten" 1, kan man bruge en INT funktion til at kappe overskydende decimaler af, og hermed opnå en Ceiling funktion.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.