V = 6
Call AddV(V)
You are not going to observe this behavior with this code. Nor can this have anything to do with the Windows version, it isn't involved with VB6 code execution. There is however an easy explanation for your observation. Your code probably looked like this:
V = 6
AddV (V)
In other words, no Call keyword. Now something pretty horrible happens in VB6. The parentheses no longer mean the same thing anymore. You don't use parentheses to call a Sub, only when you call a Function. Instead, they become part of an expression, the same kind of parentheses you'd use when you'd write Print 4 * (5 + 6)
for example. It produces a copy of the value of V. The called procedure updates that copy, it no longer affects the value of the V variable.
While this was intentional, the feature was a major bug factory and was not carried forward into VB.NET. Parentheses now always mean the same thing in a procedure call and you use them regardless of whether the called procedure is a Sub or a Function.