Come usare una cella come una variabile in Excel

Anonimo
2023-01-18T16:57:02+00:00

Ciao,

ho bisogno di avere una variabile o una cella di Excel dove posso scrivere il valore che voglio in qualsiasi momento.

Non riesco a farlo dal foglio di Excel e non so nemmeno come farlo da VBA :-(

  1. VBA: non so come creare una variabile che sia sempre accessibile dal foglio di Excel
  2. VBA: non so come accedere dal foglio di Excel ad una variabile definita in VBA per leggerla o cambiarne il valore.

Vi ringrazio per qualsiasi aiuto possiate darmi.

Grazie

Walter

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
Risposta accettata dall'autore della domanda
Anonimo
2023-01-19T18:35:18+00:00

Ciao Walter,

Due domande per te:

  1. A tuo avviso il modello potrebbe avere qualche problema?

Di primo acchito credo che vada bene.

 2. Sono sempre interessato a come impostare una variabile in VBA che poi posso richiamare o cambiare da un foglio Excel. Dove posso trovare informazioni per capire come fare?

A titolo di esempio prova scaricare il file Walter_Demo20230119.xlsm

In questo file, sfrutto l'evento Worksheet_Change per rispondere ad ogni modifica della tabella Excel, Tabella1, e chiamare la procedura Aggiorna_Giorni. In questo modo , ad ogni modifica della tabella, i valori della colonna #Giorni vengono ricalcolati. In questa procedura, si può notare l'uso della variabile dDate.

Potresti anche notare che questo approccio evita la necessità di creare una tabella ordinata sul foglio di lavoro; invece ordina i dati in memoria.

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-01-19T13:32:49+00:00

    Grazie.

    Ho provato la soluzione da te proposta ma rimangono ancora dei problemi.

    Il conteggio dei giorni lavorativi dovrebbe partire dal primo giorno in cui il valore è >1000 per la prima volta; se la riga prima era <0 il conteggio riparte da 1.

    Ho inserito 2 righe, una con valore 0 ed una con valore 2000; quella con valore 2000 dovrebbe valore 1 e quella con valore 1000 (A02) dovrebbe valere 3 mentre il sistema continua a conteggiare dalla data A006.

    Ho cambiato l'ordinamento in decrescente (e ho dovuto aggiustare la formula)

    Non so come mandarti l'Excel modificato per cui ti allego l'immagine.

    Walter

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-01-18T19:51:16+00:00

    Ciao Walter,

    Ciao Norman,

    cerco di spiegarti meglio quello che voglio fare.

    Ho una tabella fatta cosi, nella prima colonna ho un valore, nella seconda una data e la terza la colonna dove vorrei conteggiare per quanti giorni consecutivi (ad esclusione dei week end) il valore della prima colonna è maggiore di 1000. La terza colonna l'ho riempita io manualmente per questo esempio quello che sto cercando è un modo per calcolarlo automaticamente.

    Le date delle varie righe possono non essere consecutive come nell'esempio riportato.

    Nelle mie prove ho usato la funzione GIORNI.LAVORATIVI.TOT() ma il problema è che riesco a calcolarlo correttamente solo rispetto alla riga precedente mentre dovrei mettere come valore di inizio la prima dara in cui il valore della prima colonna è risultato maggiore di 1000.

    Ecco perché ho pensato ad una "Variabile": l'idea è di impostare la variabile alla prima data in cui il valore è maggiore a 1000 e resettarla a 0 nel momento in cui la riga superiore torna ad essere minore di 1000 e ricominciare cosi tutto da capo.

    Immagine

    Forse prova un approccio del seguente genere:

    Altrove, ad esempio E2, immetti la formula

     **=DATI.ORDINA(FILTRO(A2:C7;B2:B7&gt;=1000);3;1)**
    

    Nella cella H2, immetti una formula del genere:

      **=GIORNO.LAVORATIVO(1;(G2-G$2))**
    

    Trascina quest'ultima formula in basso quanto necessario

      [![](https://learn-attachment.microsoft.com/api/attachments/c4f86e3c-5a5c-4d1b-8d93-8ec4ae62684d?platform=QnA
    

    Potresti scaricare il mio file di prova Walter20230118.xlsx

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-01-18T18:02:19+00:00

    Ciao Norman,

    cerco di spiegarti meglio quello che voglio fare.

    Ho una tabella fatta cosi, nella prima colonna ho un valore, nella seconda una data e la terza la colonna dove vorrei conteggiare per quanti giorni consecutivi (ad esclusione dei week end) il valore della prima colonna è maggiore di 1000. La terza colonna l'ho riempita io manualmente per questo esempio quello che sto cercando è un modo per calcolarlo automaticamente.

    Le date delle varie righe possono non essere consecutive come nell'esempio riportato.

    Nelle mie prove ho usato la funzione GIORNI.LAVORATIVI.TOT() ma il problema è che riesco a calcolarlo correttamente solo rispetto alla riga precedente mentre dovrei mettere come valore di inizio la prima dara in cui il valore della prima colonna è risultato maggiore di 1000.

    Ecco perché ho pensato ad una "Variabile": l'idea è di impostare la variabile alla prima data in cui il valore è maggiore a 1000 e resettarla a 0 nel momento in cui la riga superiore torna ad essere minore di 1000 e ricominciare cosi tutto da capo.

    Grazie

    Walter

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-01-18T17:47:10+00:00

    Ciao Walter,

    ho bisogno di avere una variabile o una cella di Excel dove posso scrivere il valore che voglio in qualsiasi momento.

    Non riesco a farlo dal foglio di Excel e non so nemmeno come farlo da VBA :-(

    1. VBA: non so come creare una variabile che sia sempre accessibile dal foglio di Excel
    2. VBA: non so come accedere dal foglio di Excel ad una variabile definita in VBA per leggerla o cambiarne il valore.

    Non è chiaro cosa stai cercando di fare ma, a titolo di dimostrazione di una possibilità, prova come segue:

    • Crea un nome definito mia_Variabile e assegnagli il valore 100
    • Nella cella A1 di un foglio imeeti la formula = mia_Variabile
    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Aggiorna_Variabile()

    Dim vVal As Variant 
    
    vVal = Application.InputBox(Prompt:="Inserisci il nuovo valore per la variabile", Type:=1, Title:="Valore") 
    
    ThisWorkbook.Names.Add Name:="mia\_Variabile", RefersTo:=vVal 
    

    End Sub

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm
    • Alt+F8 per aprire la finestra di gestione delle macro
    • Seleziona Tester
    • Esegui

    Vedrai che il valore in A1 cambia e assume il valore definito dalla macro.

    Potresti scaricare il mio file di provaWalter20230118.xlsm

    Per facilità di dimostrazione, ho assegnato la macro precedente a un pulsante. Ogni volta che si preme il pulsante, la macro viene eseguita, il valore della variabile memorizzata nel nome definito mia_Variabile cambia e il valore della cella A1 cambia di conseguenza.

      [![Immagine](https://learn-attachment.microsoft.com/api/attachments/7bdf22a4-5296-4b83-849b-8cb261eac391?platform=QnA
    

    A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento