Aggiungere una variabile che determini la cella su cui svolgere l'operazione

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
MarcoWesley10
00sabato 30 gennaio 2016 19:27
Salve,
premetto che utilizzo Excel 2007. Ho scritto una piccola pagina excel che mi permetta di calcolare automaticamente le ore totali di tirocinio svolte in un anno.
Ecco un immagine per rendere al meglio l'idea:
[IMG]http://i65.tinypic.com/1zy7ls6.png[/IMG]
Come potete vedere dall'immagine, nella casella A2 ho inserito un menu a tendina che mi permette di scegliere quale mese voglio modificare. Una volta selezionato, premendo sul pulsante "+" vicino al numero di ore che voglio sommare, riesce ad aggiungere automaticamente le ore desiderate nel mese desiderato, facendo quindi un calcolo mensile, le cui somme totali portano al calcolo annuale delle ore di tirocinio.
Ho usato delle macro che ho scritto con una scarsa conoscenza base che avevo di C, fatta a scuola.
Ecco il codice:
[code]Sub add_03()
If Range("A2").Value = "Gennaio" Then
Range("D3").Value = Range("D3").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E3").Value = Range("E3").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F3").Value = Range("F3").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G3").Value = Range("G3").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H3").Value = Range("H3").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I3").Value = Range("I3").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J3").Value = Range("J3").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K3").Value = Range("K3").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L3").Value = Range("L3").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B3").Value = Range("B3").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C3").Value = Range("C3").Value + 1
End If
End Sub
Sub add_04()
If Range("A2").Value = "Gennaio" Then
Range("D4").Value = Range("D4").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E4").Value = Range("E4").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F4").Value = Range("F4").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G4").Value = Range("G4").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H4").Value = Range("H4").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I4").Value = Range("I4").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J4").Value = Range("J4").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K4").Value = Range("K4").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L4").Value = Range("L4").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B4").Value = Range("B4").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C4").Value = Range("C4").Value + 1
End If
End Sub
Sub add_05()
If Range("A2").Value = "Gennaio" Then
Range("D5").Value = Range("D5").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E5").Value = Range("E5").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F5").Value = Range("F5").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G5").Value = Range("G5").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H5").Value = Range("H5").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I5").Value = Range("I5").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J5").Value = Range("J5").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K5").Value = Range("K5").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L5").Value = Range("L5").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B5").Value = Range("B5").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C5").Value = Range("C5").Value + 1
End If
End Sub
Sub add_06()
If Range("A2").Value = "Gennaio" Then
Range("D6").Value = Range("D6").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E6").Value = Range("E6").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F6").Value = Range("F6").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G6").Value = Range("G6").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H6").Value = Range("H6").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I6").Value = Range("I6").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J6").Value = Range("J6").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K6").Value = Range("K6").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L6").Value = Range("L6").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B6").Value = Range("B6").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C6").Value = Range("C6").Value + 1
End If
End Sub
Sub add_07()
If Range("A2").Value = "Gennaio" Then
Range("D7").Value = Range("D7").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E7").Value = Range("E7").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F7").Value = Range("F7").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G7").Value = Range("G7").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H7").Value = Range("H7").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I7").Value = Range("I7").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J7").Value = Range("J7").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K7").Value = Range("K7").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L7").Value = Range("L7").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B7").Value = Range("B7").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C7").Value = Range("C7").Value + 1
End If
End Sub
Sub add_08()
If Range("A2").Value = "Gennaio" Then
Range("D8").Value = Range("D8").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E8").Value = Range("E8").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F8").Value = Range("F8").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G8").Value = Range("G8").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H8").Value = Range("H8").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I8").Value = Range("I8").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J8").Value = Range("J8").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K8").Value = Range("K8").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L8").Value = Range("L8").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B8").Value = Range("B8").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C8").Value = Range("C8").Value + 1
End If
End Sub
Sub add_09()
If Range("A2").Value = "Gennaio" Then
Range("D9").Value = Range("D9").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E9").Value = Range("E9").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F9").Value = Range("F9").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G9").Value = Range("G9").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H9").Value = Range("H9").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I9").Value = Range("I9").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J9").Value = Range("J9").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K9").Value = Range("K9").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L9").Value = Range("L9").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B9").Value = Range("B9").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C9").Value = Range("C9").Value + 1
End If
End Sub
Sub add_10()
If Range("A2").Value = "Gennaio" Then
Range("D10").Value = Range("D10").Value + 1
End If
If Range("A2").Value = "Febbraio" Then
Range("E10").Value = Range("E10").Value + 1
End If
If Range("A2").Value = "Marzo" Then
Range("F10").Value = Range("F10").Value + 1
End If
If Range("A2").Value = "Aprile" Then
Range("G10").Value = Range("G10").Value + 1
End If
If Range("A2").Value = "Maggio" Then
Range("H10").Value = Range("H10").Value + 1
End If
If Range("A2").Value = "Giugno" Then
Range("I10").Value = Range("I10").Value + 1
End If
If Range("A2").Value = "Luglio" Then
Range("J10").Value = Range("J10").Value + 1
End If
If Range("A2").Value = "Settembre" Then
Range("K10").Value = Range("K10").Value + 1
End If
If Range("A2").Value = "Ottobre" Then
Range("L10").Value = Range("L10").Value + 1
End If
If Range("A2").Value = "Novembre" Then
Range("B10").Value = Range("B10").Value + 1
End If
If Range("A2").Value = "Dicembre" Then
Range("C10").Value = Range("C10").Value + 1
End If
End Sub[/code]

Come potete vedere è molto lungo il codice che ho dovuto scrivere, e avevo pensato di usare una variabile che, a seconda del mese selezionato, imposti su quale cella andare ad agire.
Un esempio di codice che avevo pensato era:
[code]
sub modd()
dim x as object 'ho letto che questo è il modo per inserire una variabile
If Range("A2").Value = "Gennaio" Then
x = "A"
end if
end sub
sub add_03()
Range("x3").Value = Range("x3").Value + 1
end sub[/code]
Ovviamente avrei ripetuto l'if per ogni mese dell'anno, ma il problema è che il linguaggio legge "x3" come cella, e non singolarmente la "x" come una variabile, che sarebbe dovuta diventare quindi A e trasformare "x3" in "A3". Ho capito che il meccanismo di questo mio ragionamento è sbagliato, e vorrei chiedere a voi quindi come creo una variabile che a seconda del mese che seleziono dal menu' a tendina modifichi la variabile presente in "Range"? Ovviamente vorrei qualcosa che sostituisse solo la "x" presente nella stringa in modo da accorciare definitivamente il codice. Diciamo che il codice che ho scritto esegue il suo lavoro alla perfezione, solo che volendo imparare sempre qualcosa in più, vorrei accorciarlo e quindi migliorarlo.
Grazie in anticipo per l'attenzione.
alfrimpa
00sabato 30 gennaio 2016 19:41
Ciao Marco

Credo senz'altro che la tua macro possa essere drasticamente ridotta ma, più che un'immagine con la quale non si può far nulla, dovresti allegare il tuo file,in modo che chi volesse aiutarti non sia costretto a ricostruirselo.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 22:42.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com