|You could try re-writing the function using the Select Case construct and using a Static variable as a counter.|
When you have multiple if then statements the Select Case construct is more efficient and faster. A Static variable retains its value bewtween calls and while you code is loaded so it is best to put the Sub into a .bas module. If it is in a form module and the form is unloaded you will lose the values of the static variable. App.Path is a system variable and assumes that the BMP images are stored in the same folder as the executable file.
It ptobably wont solve your problem but it makes it easier to read and perhaps easier to understand what is going on.
Private Sub ZombieAnimation()
Select case PictureCount
Set ZombieGrunt.Picture = app.path & "\Zombie-Grunt-1.bmp
Set ZombieGrunt.Picture = app.path & "\Zombie-Grunt-2.bmp
Set ZombieGrunt.Picture = app.path & "\Zombie-Grunt-3.bmp
Set ZombieGrunt.Picture = app.path & "\Zombie-Grunt-8.bmp
PictureCount = PictureCount + 1
if PictureCount > 7 then PictureCount = 0