Direi che manca qualcosa:
codice:
messaggio=replace(messaggio, array1(a), array2(a), 1, 1)
comunque gli indici in vb vanno tra parentesi tonde, non quadre.



edit:
Anche il ciclo va rifatto a questo punto, io lo metterei così (non l'ho provato):
codice:
i = 0

for a=0 to ubound(array1)
     Do While instr(messaggio,array1[a])>0 or i<8
         messaggio=replace(messaggio, array1(a), array2(a), 1, 1)
         i = i + 1
     loop
     if  i > 7 then exit for
 next a