The built-in repeat system is intended for simple actions that don't require changes between iterations, E.G. if you had a macro to craft something and you want to do so multiple times to gain multiple items.
You need to use the loop action to be able to increment a value, and more importantly to reset the value after the command is complete.
An alternative to using quick input is to use another loop embedded in the first one:
Color [2..100] sprites;Color 1 sprite
Set small int (condition) [LoopTarget] value to the converted value of {TXTNUM:"{CMD}"}
Set small int (condition) [LoopCount] value to 0
Start Loop While : [LoopCount] Does Not Equal [LoopTarget]
Set small int (condition) [KeypressCount] value to -1
Start Loop While : [KeypressCount] Does Not Equal [LoopCount]
Press A key and hold for 0,06 seconds and release
Set small int (condition) [KeypressCount] value as incremented by 1
End Loop
Press B key and hold for 0,06 seconds and release
Set small int (condition) [LoopCount] value as incremented by 1
End Loop
The "A" key will be pressed as many times at the first loop has iterated each cycle, whereas the "B" key will be pressed once each cycle, I.E. "abaabaaab" and so on.
In this case you can tell the command how many times to loop. Note that this will generate a large amount of command names, which can(depending on your machine) have an effect on the responsiveness of the speech engine.
EDIT: An alternative, where you can dictate the amount of repeats(which only adds a single command phrase to the speech engine):
Set small int (condition) [LoopTarget] value to 0
Set Boolean [DictationComplete] to False
Say, 'How many?'
Start Loop While : [DictationComplete] Equals False
Marker: DictationLoop
Start Dictation Mode (Clearing Dictation Buffer)
Start Loop While : [{DICTATION}] Equals ''
End Loop
Stop Dictation Mode
Begin Small Integer Compare : [LoopTarget] Equals 0
Begin Text Compare : [{EXP: {TXTNUM:"{DICTATION}"} >= 0}] Equals '1'
Set small int (condition) [LoopTarget] value to the converted value of {TXTNUM:"{DICTATION}"}
Else If Text Compare : [{DICTATION}] Equals 'one'
Set small int (condition) [LoopTarget] value to 1
Else If Text Compare : [{DICTATION}] Equals 'two'
Set small int (condition) [LoopTarget] value to 2
Else If Text Compare : [{DICTATION}] Equals 'three'
Set small int (condition) [LoopTarget] value to 3
Else If Text Compare : [{DICTATION}] Equals 'four'
Set small int (condition) [LoopTarget] value to 4
Else If Text Compare : [{DICTATION}] Equals 'five'
Set small int (condition) [LoopTarget] value to 5
Else If Text Compare : [{DICTATION}] Equals 'six'
Set small int (condition) [LoopTarget] value to 6
Else If Text Compare : [{DICTATION}] Equals 'seven'
Set small int (condition) [LoopTarget] value to 7
Else If Text Compare : [{DICTATION}] Equals 'eight'
Set small int (condition) [LoopTarget] value to 8
Else If Text Compare : [{DICTATION}] Equals 'nine'
Set small int (condition) [LoopTarget] value to 9
Else
Say, 'Please say a valid number'
Jump to Marker: DictationLoop
End Condition
Say, 'Loop {SMALL:LoopTarget} times?'
Jump to Marker: DictationLoop
Else
Begin Text Compare : [{DICTATION}] Equals 'affirmative'
Set Boolean [DictationComplete] to True
Else If Text Compare : [{DICTATION}] Equals 'negative'
Set small int (condition) [LoopTarget] value to 0
Say, 'How many?'
Jump to Marker: DictationLoop
Else
Say, 'Please say "affirmative" or "negative"'
Jump to Marker: DictationLoop
End Condition
End Condition
End Loop
Set small int (condition) [LoopCount] value to 0
Start Loop While : [LoopCount] Does Not Equal [LoopTarget]
Set small int (condition) [KeypressCount] value to -1
Start Loop While : [KeypressCount] Does Not Equal [LoopCount]
Press A key and hold for 0,06 seconds and release
Set small int (condition) [KeypressCount] value as incremented by 1
End Loop
Press B key and hold for 0,06 seconds and release
Set small int (condition) [LoopCount] value as incremented by 1
End Loop
I've also attached both variants as exported commands.