Tramite codice VBA trasformare la stessa formula in formula costante.

Anonimo
2019-11-09T20:55:39+00:00

Salve,

ho la seguente situazione:

Il rigo con sfondo giallo A4 : V4 (ci sono 8 colonne nascoste) determina la prima giocata terminata e quello successivo una nuova giocata.

Concentriamoci solo sulla colonna K

La formula al suo interno, fino al rigo giallo (naturalmente in un'altra giocata ci potrebbero stare molte più righe fino al rigo giallo) è la seguente:

=$B$3*$F$3-$B$3

Bene,

quello che a me servirebbe è poter aggiornare il primo rigo di una nuova giocata, nell'esempio K5 come se in K4 ci fosse la seguente formula:

=B4*F4-B4

in modo d'avere:

=B5*F5-B5

per poi trasformarla, sempre in K5, in formula costante:

=$B$5*$F$5-$B$5

In poche parole, in questo pezzo di codice (link codice completo) come andrebbe sostituita la formula in grassetto?

Application.EnableEvents = False

            .Cells(2, 1) = SH.Range("A1").Value

            .Cells(2, 2) = SH.Range("C3").Value

            .Cells(2, 3) = SH.Range("D3").Value

            .Cells(2, 4) = SH.Range("E3").Value

            .Cells(2, 5) = SH.Range("F3").FormulaR1C1

            .Cells(2, 7) = SH.Range("H3").FormulaR1C1

            .Cells(2, 8) = SH.Range("I3").FormulaR1C1

            .Cells(2, 9) = SH.Range("J3").FormulaR1C1

            .Cells(2, 10).FormulaR1C1 = "=RC[-9]*RC[-5]-RC[-9]"

            .Cells(2, 11) = SH.Range("L3").FormulaR1C1

            .Cells(2, 12) = SH.Range("M3").FormulaR1C1

Vladimiro

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

6 risposte

Ordina per: Più utili
  1. Anonimo
    2019-11-10T12:23:58+00:00

    Ciao Vladimiro,

    purtroppo non cambia nulla in quanto mi restituisce sempre la stessa formula:=B5*F5-B5

    mentre io ho bisogno che mi restituisca la formula costante:=$B$5*$F$5-$B$5

    Chiedo scusa, avevo capito male (;-

    Prova:

                     .Cells(2, 10).FormulaR1C1 = "=R5C2*R5C6-R5C2"

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2019-11-12T11:37:54+00:00

    Ciao Vladimiro,

    Nooooo, ho cantato troppo presto vittoria!!!

    Nella seconda giocata non si aggiorna più.

    Invece di uscirmi:

    =$B$7*$F$7-$B$7

    mi esce sempre :

    =$B$5*$F$5-$B$5

    Volendo inserire il seguente codice:

    .Cells(2, 10).FormulaR1C1 = "=R" & _

                                            "C2 *" & "R" & _

                                            "C6 - " & " R" & "C2"

    non mi congela il numero riguardante il rigo:

    =$B7 *$F7 -  $B7

    Cosa strana per me è che modificando la parte riguardante il numero di rigo con un numero, la formula funziona:

    .Cells(2, 10).FormulaR1C1 = "=R" & 7 & _

                                            "C2 *" & "R" & 7 & _

                                            "C6 - " & " R" & 7 & "C2"

    risultato:

    =$B$7 *$F$7 -  $B$7

    solo che in questo modo sto punto e a capo :-(

    Non dovrebbe essere necessario congelare la riga perché la formula può sfruttare la riga corrente. In effetti, se congeli la riga, come hai scoperto, la formula non verrà aggiornata.

    Pertanto, prova:

          .Cells(2, 10).FormulaR1C1 ="=RC2*RC6-RC2"

    Se ciò non dovesse risolvere il tuo problema, ti chiederei gentilmente di caricare il file che stai utilizzando. il quale è chiaramente diverso dal file di esempio che hai precedentemente caricato.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-11-10T18:42:14+00:00

    Ciao Vladimiro,

    purtroppo non cambia nulla in quanto mi restituisce sempre la stessa formula:=B5*F5-B5

    mentre io ho bisogno che mi restituisca la formula costante:=$B$5*$F$5-$B$5

    Chiedo scusa, avevo capito male (;-

    Prova:

                     .Cells(2, 10).FormulaR1C1 = "=R5C2*R5C6-R5C2"

    ===

    Regards,

    Norman

    Ciao Norman,

    soluzione semplice ed efficace.

    Pensa che mi stavo inventando le peggio cose per arrivare allo stesso risultato!!! :-)

    POST MODIFICATO

    Nooooo, ho cantato troppo presto vittoria!!!

    Nella seconda giocata non si aggiorna più.

    Invece di uscirmi:

    =$B$7*$F$7-$B$7

    mi esce sempre :

    =$B$5*$F$5-$B$5

    Volendo inserire il seguente codice:

    .Cells(2, 10).FormulaR1C1 = "=R" & _

                                            "C2 *" & "R" & _

                                            "C6 - " & " R" & "C2"

    non mi congela il numero riguardante il rigo:

    =$B7 *$F7 -  $B7

    Cosa strana per me è che modificando la parte riguardante il numero di rigo con un numero, la formula funziona:

    .Cells(2, 10).FormulaR1C1 = "=R" & 7 & _

                                            "C2 *" & "R" & 7 & _

                                            "C6 - " & " R" & 7 & "C2"

    risultato:

    =$B$7 *$F$7 -  $B$7

    solo che in questo modo sto punto e a capo :-(

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-11-10T11:23:43+00:00

    Ci8ao Vladimiro,

    ho la seguente situazione:

    Il rigo con sfondo giallo A4 : V4 (ci sono 8 colonne nascoste) determina la prima giocata terminata e quello successivo una nuova giocata.

    Concentriamoci solo sulla colonna K

    La formula al suo interno, fino al rigo giallo (naturalmente in un'altra giocata ci potrebbero stare molte più righe fino al rigo giallo) è la seguente:

    =$B$3*$F$3-$B$3

    Bene,

    quello che a me servirebbe è poter aggiornare il primo rigo di una nuova giocata, nell'esempio K5 come se in K4 ci fosse la seguente formula:

    =B4*F4-B4

    in modo d'avere:

    =B5*F5-B5

    per poi trasformarla, sempre in K5, in formula costante:

    =$B$5*$F$5-$B$5

    In poche parole, in questo pezzo di codice (link codice completo) come andrebbe sostituita la formula in grassetto?

    Application.EnableEvents = False

                .Cells(2, 1) = SH.Range("A1").Value

                .Cells(2, 2) = SH.Range("C3").Value

                .Cells(2, 3) = SH.Range("D3").Value

                .Cells(2, 4) = SH.Range("E3").Value

                .Cells(2, 5) = SH.Range("F3").FormulaR1C1

                .Cells(2, 7) = SH.Range("H3").FormulaR1C1

                .Cells(2, 8) = SH.Range("I3").FormulaR1C1

                .Cells(2, 9) = SH.Range("J3").FormulaR1C1

                .Cells(2, 10).FormulaR1C1 = "=RC[-9]*RC[-5]-RC[-9]"

                .Cells(2, 11) = SH.Range("L3").FormulaR1C1

                .Cells(2, 12) = SH.Range("M3").FormulaR1C1

    Sostituisci la riga di codice evidenziata con:

                  .Cells(2, 10).Formula = "=RC[-9]*RC[-5]-RC[-9]"

    ===

    Regards,

    Norman

    Ciao Norman,

    purtroppo non cambia nulla in quanto mi restituisce sempre la stessa formula:

    =B5*F5-B5

    mentre io ho bisogno che mi restituisca la formula costante:

    =$B$5*$F$5-$B$5

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-11-10T10:45:49+00:00

    Ci8ao Vladimiro,

    ho la seguente situazione:

    Il rigo con sfondo giallo A4 : V4 (ci sono 8 colonne nascoste) determina la prima giocata terminata e quello successivo una nuova giocata.

    Concentriamoci solo sulla colonna K

    La formula al suo interno, fino al rigo giallo (naturalmente in un'altra giocata ci potrebbero stare molte più righe fino al rigo giallo) è la seguente:

    =$B$3*$F$3-$B$3

    Bene,

    quello che a me servirebbe è poter aggiornare il primo rigo di una nuova giocata, nell'esempio K5 come se in K4 ci fosse la seguente formula:

    =B4*F4-B4

    in modo d'avere:

    =B5*F5-B5

    per poi trasformarla, sempre in K5, in formula costante:

    =$B$5*$F$5-$B$5

    In poche parole, in questo pezzo di codice (link codice completo) come andrebbe sostituita la formula in grassetto?

    Application.EnableEvents = False

                .Cells(2, 1) = SH.Range("A1").Value

                .Cells(2, 2) = SH.Range("C3").Value

                .Cells(2, 3) = SH.Range("D3").Value

                .Cells(2, 4) = SH.Range("E3").Value

                .Cells(2, 5) = SH.Range("F3").FormulaR1C1

                .Cells(2, 7) = SH.Range("H3").FormulaR1C1

                .Cells(2, 8) = SH.Range("I3").FormulaR1C1

                .Cells(2, 9) = SH.Range("J3").FormulaR1C1

                .Cells(2, 10).FormulaR1C1 = "=RC[-9]*RC[-5]-RC[-9]"

                .Cells(2, 11) = SH.Range("L3").FormulaR1C1

                .Cells(2, 12) = SH.Range("M3").FormulaR1C1

    Sostituisci la riga di codice evidenziata con:

                  .Cells(2, 10).Formula = "=RC[-9]*RC[-5]-RC[-9]"

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento