oggi la mia richiesta è molto probabilmente fuori luogo, ma la speranza nelle vostre capacità è tanta,
per cui provo ugualmente a farla:
Ho un codice scritto in linguaggio jscript di un form, la mia richiesta è la seguente, vorrei trasformare
questo codice in macro vba.
Immagino che se si è a conoscenza del jscript, sia semplice, ma per me è impossibile non avendo le conoscenze.
Vorrei inserire l'eventuale macro in un foglio dove mi dovrebbe calcolare, (è questo che lo script fà) il numero di
colonne di un sistema in base ai parametri digitati, numeri, giocata, garanzia e numeri usciti.
Posto ugualmente il codice:
- Codice: Seleziona tutto
function calc1(form)
{
//Prendo i valori originali
var NUM = form.n.value;
var LUN = form.p.value;
var GAR = form.g.value;
var EST = form.u.value;
var n = form.n.value*1;
var p = form.p.value*1;
var g = form.g.value*1;
var u = form.u.value*1;
var pokr;
var sch;
var er=0;
var i;
var nonum=0;
if (nonum) {alert("Ammessi solo numeri ..!"); return;}
if (n>90) {alert("Max. 90 numeri ..!"); return;}
if (n<p) {alert("Lunghezza superiore ai numeri ..!"); return;}
if (g>u) {alert("Garanzia superiore agli estratti ..!"); return;}
if (n<0) {alert("Valori negativi o non ammessi ..!"); return;}
if (n==0 || p==0 || g==0 || u==0) {alert("Caselle vuote ..!"); return;}
if (!er)
{
pokr = PoK(n,p,g,u);
rs = Pov(n, u)/pokr;
sch = frmt(rs);
//sch = sch + " combinazioni. Il sistema ";
er=0;
if (rs!=Math.floor(rs)) {er=1;}
if (rs*p%n) {er=1;}
i = 2*g-u-1;
if (i<0) {i=0;}
if ((n-i)%(p-i)) {er=1;}
if ((n-i)/(p-i)<p-i && rs>(n-i)/(p-i)) {er=1;}
for (i=1; i<=g-2;i++)
{
pokr = PoK(n-i,p-i,g-i,u-i);
rs = Pov(n-i, u-i)/pokr;
}
form.ris.value = sch
}
}
function PoK(n,p,g,u){
var i;
var m = 0;
for (i = g; i<=u; i++) m += Pov(p, i)*Pov(n-p, u-i);
return(m);
}
function Pov(n, k){
var j;
var l;
var m = 1;
l = k - n;
for (j = n - k + 1; j <= n; j++){ m *= j; m /= (j + l);}
return(m);
}
function frmt(ui){
var ur="";
var uj=ui;
var i;
var j;
var k;
var l;
var m;
k=0;
j=100000000;
m=9;
while (j>=0.001)
{
m=m-1;
if (ui>=j || k==1)
{
if (k==0) {k=1;}
l = Math.floor(ui/j);
ur = ur + l
if (j==1) {ur=ur+",";}
if (m%3==0 && m>0) {ur=ur+" ";}
ui = ui - l*j;
}
j=j/10;
if (j<1 && k==0) {k=1;}
}
if (uj==Math.floor(uj)) {ur = ur.substring(0,ur.length-4);}
if (uj<1) {ur="0,"+ur;}
return(ur);
}
Nel caso il post non fosse regolare, prego gli amministratori di cancellarlo.
Un saluto a tutti e ringrazio per eventuale aiuto.
Francesco