Di seguito vedremo un programma in Excel VBA che crea una tabella media mobile. Posizionare un pulsante di comando nel foglio di lavoro e aggiungere la seguente riga di codice:

Range("B3").Value = WorksheetFunction.RandBetween(0, 100)

Questa linea di codice inserisce un numero casuale compreso tra 0 e 100 nella cella B3. Vogliamo Excel VBA per prendere il nuovo valore azionario e posizionarlo nella prima posizione della tabella media mobile. Tutti gli altri valori dovrebbero scendere di un posto e l’ultimo valore dovrebbe essere soppresso.

Rolling Average Table in Excel VBA

Rolling Average Table in Excel VBA

Creare un evento di modifica del foglio di lavoro. Codice aggiunto all’evento Change foglio di lavoro sarà eseguito da Excel VBA quando si modifica una cella di un foglio di lavoro.

  1. Aprire il Visual Basic Editor.

  2. Fare doppio clic su Sheet1 (Foglio1) in Esplora progetti.

  3. Scegliere foglio di lavoro dall’elenco a discesa sinistra. Seleziona Cambia dall’elenco a discesa a destra.

Worksheet Change Event in Excel VBA

Aggiungere le seguenti righe di codice per l’evento Change Foglio di lavoro:

  1. Dichiarare una variabile denominata newvalue di tipo integer e due catene (firstfourvalues ​​e lastfourvalues).

Dim newvalue As Integer, firstfourvalues As Range, lastfourvalues As Range
  1. L’evento di modifica ascolta tutte le modifiche di Sheet1. Vogliamo solo Excel VBA per fare qualcosa se qualcosa cambia nella cella B3. Per raggiungere questo obiettivo, aggiungere la seguente riga di codice:

If Target.Address = "$B$3" Then
  1. Inizializziamo newvalue con il valore della cella B3, firstfourvalues ​​con Range ( “D3: D6”) e lastfourvalues ​​con Range ( “D4: D7”).

newvalue = Range("B3").Value

Set firstfourvalues = Range("D3:D6")

Set lastfourvalues = Range("D4:D7")
  1. Ora arriva il semplice trucco. Vogliamo aggiornare la tabella media mobile. È possibile raggiungere questo sostituendo gli ultimi quattro valori con i primi quattro valori della tabella e mettendo il nuovo magazzino valore alla prima posizione.

lastfourvalues.Value = firstfourvalues.Value

Range("D3").Value = newvalue
  1. Non dimenticare di chiudere l’istruzione if.

End if
  1. Infine, immettere la formula = MEDIA (D3: D7) nella cella D8.

  2. Test del programma facendo clic sul pulsante di comando.