Sorry, gentlemen, was away for the weekend.
The variable was a double, declared as Private in Sub Globals.
Sub Globals
'''
Private someDouble as Double
...
End Sub
Sub Main
...
DoStuff(someDouble)
...
End Sub
Sub DoStuff(thisIsDifferentVariableName)
...
'Here, when someDouble changed in Main, due to calling a function in a Sub in Main from this Sub,
'thisIsDifferentVariableName was tracking the new value of someDouble in Main.
...
End Sub
The problem might be linked to the debugger, as I was fiddling with the code and then hitting Restart debugging, but when I disconnected the 'phone and restarted the PC, this worked fine - but the problem just moved further down the code to where I was taking the upper bound of two values from the function Sub into a local variable in the problem Sub, and iterating through the lower bound, increasing it until it matched the old upper bound. This I never got work, as the two values were calculated in the same Main function sub, and the upper bound was increasing with the lower bound each time, so a match was never found - just an infinite loop. Again, this was a locally declared variable (double) equated to the temporary value of the function in Main, which should have remained static after reading it outside the subsequent loop (Do Until...Loop).
In the end I solved the problem by embedding the relevant functions into the DoStuff sub, and it works fine - but doesn't explain why this 'variable tracking' was occurring.