Try changing this bit:
if getrawkeystate (37)
playsprite (soldieranim_I,5,1,1,2)
soldier_y#=soldier_y#+1
endif
To this:
if getrawkeystate (37)
if GetSpritePlaying(soldieranim_I) = 0
playsprite (soldieranim_I,5,1,1,2)
endif
soldier_y#=soldier_y#+1
else
if GetSpritePlaying(soldieranim_I) = 1
StopSprite(soldieranim_I)
endif
endif
Basically, you are calling PlaySprite every loop which is effectively restarting the animation. You need to check to ensure the animation isn't already running...
EDIT: For the movement part, I can see you are increasing your Y position (soldier_y#), but are not updating the sprite position. You will need to add the SetSpritePosition command with the new X/Y values to move the sprite.