Ciò avviene perchè ad ogni modifica, il controllo viene ridisegnato completamente.
In questi casi di solito l'uso della funzione LockWindowUpdate risolve egregiamente il problema.

In un modulo BAS aggiungi la dichiarazione:
codice:
Public Declare Function LockWindowUpdate Lib "user32.dll" (ByVal hwndLock As Long) As Long
dopo la puoi usare dove sai di modificare qualcosa 'pesantemente'.

codice:
LockWindowUpdate mshflexgrid1.hWnd
'
' ciclo di elaborazioni pesante
'
LockWindowUpdate 0
La prima chiamata disattiva il disegno , la seconda lo riattiva ed esegue il refresh

Attento che non puoi annidare le chiamate di LockWindowUpdate, ma devono essere sempre consecutive ed in coppia.
Vedi la guida di Microsoft per i dettagli.