Risultati da 1 a 6 di 6

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



  1. #1
    L'avatar di MarcoWesley10
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    2
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0

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

    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:

    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:
    Codice: 
    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

    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:
    Codice: 
    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
    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.

  2. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3332
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Ciao Marco riesci ad inserire un file in maniera tale che ci eviti di ricreare l'ambiente da zero e magari inserire in rosso il risultato che vorresti ottenere?

    Attendo il file.

    Ciao.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  3. #3
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3332
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Forse ho capito cosa volevi controlla se è questo e fammi sapere.

    Ciao.
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  4. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3332
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Forse ho capito cosa volevi controlla se è questo e fammi sapere.

    Ciao.

    Codice: 
    Option Explicit
    
    Sub Somma_ore()
    
    
    Dim i As Integer
    Dim mese As String
    Dim ore As Integer
    
    
    ' salvo il valore del mese della cella "A2"
    Range("R15").FormulaLocal = "=INDICE(R1:R11;A2)"
    mese = Range("R15").Value
    '----------------------------------------------------------------------------
    ' Imposto il valore delle ore di cui voglio il calcolo
    ore = InputBox("Imposta il numero di ore che vuoi elaborare : da 3 a 10", "INPUT")
    If ore < 3 Or ore > 10 Then
        MsgBox ("I VALORI VALIDI SONO DA 3 A 10"), vbCritical, "ATTENZIONE"
        Exit Sub
    End If
    '--------------------------------------------------------------------------------
    ' sommo il valore delle ore nella cella corrispondente ai dati impostati
    For i = 2 To 13
        If Cells(2, i).Value = mese Then
            Cells(ore, i).Value = Cells(ore, i).Value + 1
            Exit For
        End If
    
    Next

    File Allegati File Allegati
    Ultima modifica fatta da:Gerardo Zuccalà; 31/01/16 alle 02:18 Motivo: codice VBA

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  5. #5
    L'avatar di MarcoWesley10
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    2
    Versione Office
    2007
    Likes ricevuti
    0
    Likes dati
    0
    Ciao,
    ho dato un occhiata al programma che mi hai postato ed è su per giù quello che volevo. Diciamo che la funzione è esatta, solo che ovviamente voglio modificarlo e cercare di capirne il funzionamento per renderlo un pò più mio.
    Grazie dell'ottimo lavoro e della rapidità di soluzione!!

  6. #6
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3332
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Citazione Originariamente Scritto da MarcoWesley10 Visualizza Messaggio
    Ciao,
    ho dato un occhiata al programma che mi hai postato ed è su per giù quello che volevo. Diciamo che la funzione è esatta, solo che ovviamente voglio modificarlo e cercare di capirne il funzionamento per renderlo un pò più mio.
    Grazie dell'ottimo lavoro e della rapidità di soluzione!!
    grazie a te del riscontro e se abbiamo risolto, ti pregherei di mettere la discussione come [RISOLTO]
    Vai nella barra dei menu, situata all'inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegli “Segna questo Thread come risolto”
    alla prossima :261:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

Discussioni Simili

  1. [Risolto] Nome Foglio come variabile in una cella
    Di Edoardo91 nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 04/10/16, 23:00
  2. Cella per aggiungere e cella per sottrarre
    Di wifi75 nel forum Domande su Excel VBA e MACRO
    Risposte: 28
    Ultimo Messaggio: 13/09/16, 16:17
  3. Macro per lanciare .bat con nome variabile inserito in una cella
    Di Gambry nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 15/06/16, 22:06
  4. Ricavare da colonna una variabile e stamparla in una cella
    Di Bestpaul nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 06/12/15, 12:05
  5. memorizzare variabile NON su cella
    Di zio_tom nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 20/11/15, 20:29

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •