OK, call me silly, but it would seem that you are working too hard....
Why change the prompt? Why not get all the values you need for the stored proc from a VB6 form and then call the stored proc and return the dataset to the report. VB is way more versatile for the display of parameter options than Crystal is. It is what my company uses, and I have never been happier to not have to deal with Crystal's parameter input screen.
The other solution, and I am by no means an expert because I don't code this way, is to use the name of the parameter instead of an index (this might not be available in VB6). You might also try printing what the current value of prompt is in the immediate window, which might help.
also you might try getting the number of parameterfields in the report and their names, you might find that something else is amiss.
Hope of some of this helped.