I'm no expert at this sort of stuff, but if I was managing a group of enemy 'objects', then I would create a numerical array - with say:
Dim Enemy(50): Rem Max number you can have
NumEnemies = 20: Rem number you want on the current level
When you create enemy number 1, then you would say Enemy(1)=1 (alive). Create number 2 and then use Enemy(2)=1. (1 = alive).
Each run through the main loop of your program, a simple for next loop would do something like:
For N=1 To NumEnemies
If Enemy(N)=1
Rem Make object N move
Endif
Next N
When an enemy is killed, you delete the object and set that object's 'alive' state to 0 (dead). So if you kill object 4 then you would use Enemy(4)=0.
Once this is done, the above loop won't try to update that object's position. That's where I think your error is being caused because you are trying to move the object you just deleted.
If you want to respawn a dead enemy, or just bring in reinforcements, a similar loop would be called:
Respawn = 5: Rem number of new enemies to bring back
For N=1 To NumEnemies
If Enemy(N)=0: Rem Old object is dead
Rem Respawn using this object number (N)
Enemy(N)=1: Rem Alive again!
Dec Respawn: Rem Count number we respawn
Endif
If Respawn = 0 Then Exit: Rem Quit loop - we have respawned enough
Next N
The first loop should prevent your object does not exist errors as you would only be trying to move objects which are alive - not dead.
This should work in theory.
TDK_Man