La via piu' semplice, secondo me, e' fare in modo che la routine utilizzi una cella del foglio come indicatore (cella ovviamente non usata dal foglio per altri scopi !)

La routine dovra' per prima cosa leggere la cella,
codice:
If  <e' vuota> Then
  'e' la prima volta che viene chiamata:
  <scrivo qualcosa nella cella>
  'eseguo quello che serve...
End If
quando la cella non e' vuota, la routine non eseguira' niente.

Che te ne sembra ?


P.S.: come alternativa, si potrebbe utilizzare come flag una chiave di registro (vedi SaveSetting, GetSetting), ma non so se ne vale la pena...