Aggiornamento automatico formule
Hai un problema con Excel? 
Aggiornament automatic formule
di Alessandro (utente non iscritto) data: 14/03/2009
Ciao a tutti vi espongo il problema...sto realizzando un calendario turni per il lavoro, per fare questo uso una chiamata a una routine vba calcola_turno(data) per ogni giorno dell'anno. la routine calcola_turno(data) restitisce il turno in base alla data immessa come input e in base alla squadra (siamo 4 squadre a,b,c,d) contenuta in una cella...sembra funzionare tutto ma se cambio la sottosquadra nella cella non si aggiornano in automatico tutti i turni del calendario...riesco a forzare l'aggiornamento con la combinazione ctrl+alt+f9 oppure andando a dare l'invio per ogni formula...in opzioni il calcolo è impostato su automatico e uso excel 2003...bugs o sbaglio qualcosa??? vi incollo per intero tutto il codice...
Global turni(28) As String
Global riferimento As Date
Function calcola_turno(ByVal giorno As Date) As String
Dim giorni, resto As Integer
Dim squadra As String
squadra = Foglio1.Cells(1, 21)
Select Case squadra
Case Is = "A"
definisci_turni_a
Case Is = "B"
definisci_turni_b
Case Is = "C"
definisci_turni_c
Case Is = "D"
definisci_turni_d
End Select
If giorno >= riferimento Then
giorni = giorno - riferimento
resto = giorni Mod 28
Else
giorni = riferimento - giorno
resto = 28 - (giorni Mod 28)
If resto = 28 Then resto = 0
End If
calcola_turno = turni(resto)
End Function
Sub definisci_turni_a()
turni(0) = "2"
turni(1) = "R"
turni(2) = "1"
turni(3) = "1"
turni(4) = "2"
turni(5) = "2"
turni(6) = "N"
turni(7) = "R"
turni(8) = "2"
turni(9) = "2"
turni(10) = "2"
turni(11) = "N"
turni(12) = "N"
turni(13) = "R"
turni(14) = "R"
turni(15) = "1"
turni(16) = "N"
turni(17) = "N"
turni(18) = "R"
turni(19) = "R"
turni(20) = "1"
turni(21) = "1"
turni(22) = "N"
turni(23) = "R"
turni(24) = "R"
turni(25) = "1"
turni(26) = "1"
turni(27) = "2"
riferimento = #1/1/2006#
End Sub
Sub definisci_turni_b()
turni(0) = "R"
turni(1) = "2"
turni(2) = "2"
turni(3) = "2"
turni(4) = "N"
turni(5) = "N"
turni(6) = "R"
turni(7) = "R"
turni(8) = "1"
turni(9) = "N"
turni(10) = "N"
turni(11) = "R"
turni(12) = "R"
turni(13) = "1"
turni(14) = "1"
turni(15) = "N"
turni(16) = "R"
turni(17) = "R"
turni(18) = "1"
turni(19) = "1"
turni(20) = "2"
turni(21) = "2"
turni(22) = "R"
turni(23) = "1"
turni(24) = "1"
turni(25) = "2"
turni(26) = "2"
turni(27) = "N"
riferimento = #1/1/2006#
End Sub
Sub definisci_turni_c()
turni(0) = "R"
turni(1) = "1"
turni(2) = "N"
turni(3) = "N"
turni(4) = "R"
turni(5) = "R"
turni(6) = "1"
turni(7) = "1"
turni(8) = "N"
turni(9) = "R"
turni(10) = "R"
turni(11) = "1"
turni(12) = "1"
turni(13) = "2"
turni(14) = "2"
turni(15) = "R"
turni(16) = "1"
turni(17) = "1"
turni(18) = "2"
turni(19) = "2"
turni(20) = "N"
turni(21) = "R"
turni(22) = "2"
turni(23) = "2"
turni(24) = "2"
turni(25) = "N"
turni(26) = "N"
turni(27) = "R"
riferimento = #1/1/2006#
End Sub
Sub definisci_turni_d()
turni(0) = "1"
turni(1) = "N"
turni(2) = "R"
turni(3) = "R"
turni(4) = "1"
turni(5) = "1"
turni(6) = "2"
turni(7) = "2"
turni(8) = "R"
turni(9) = "1"
turni(10) = "1"
turni(11) = "2"
turni(12) = "2"
turni(13) = "N"
turni(14) = "R"
turni(15) = "2"
turni(16) = "2"
turni(17) = "2"
turni(18) = "N"
turni(19) = "N"
turni(20) = "R"
turni(21) = "R"
turni(22) = "1"
turni(23) = "N"
turni(24) = "N"
turni(25) = "R"
turni(26) = "R"
turni(27) = "1"
riferimento = #1/1/2006#
End Sub
|
di R (utente non iscritto) data: 14/03/2009
Se vuoi utilizzarla come udf (funzione definita dall'utente) e vuoi che si aggiorni al variare della cella devi oltre alla data, passare anche la cella con la squadra come argomento della function.
fai sapere
saluti
r
Risolto!
di Alessandro (utente non iscritto) data: 14/03/2009
Ti ringrazio avevi ragione...passando la cella come parametro nella funzione si aggiorna tutto senza problemi...grazie ancora
Aggiornament automatic formule
di Ale210480 data: 17/03/2009
Ciao a tutti...un altra domanda...esistono altri modi per passare parametri ad una udf senza includerli nella sua dichiarazione?
mi spiego meglio...
avendo un udf tipo:
function turni(par1,par2,par3...par10 as everything)as everything
quando i parametri diventano troppi (nel mio caso dovrei passare il contenuto di circa 20 celle!) diventa di difficile lettura...
d'altra parte se la lettura dei parametri dalle celle excel la faccio da dentro la routine non mi funziona piu (giustamente) l'aggiornamento automatico delle formule...(come da mio precedente post)
esistono metodi per il passaggio paramentri che siano eleganti nella scrittura e funzionali??? grazie
Vuoi Approfondire?