Unfortunately, the equal sign in VB is confusing. C# is nice because it has = and ==. I think that's what's going on here.

Correct me if I'm wrong, but I don't think it's a setting. Guessing the PT Exorcist did not check that code in the IDE. No offense PT Exorcist, just a guess.

j += nbo is way different that j = j + nbo if it's used as an expression and not an assignment. j += nbo assigns j to j + nbo. Now if you just had a line that said j = j + nbo, then it does the same thing. But, when used as an expression, like if ( j = j + nbo), it actually returns a boolean - "is j equal to j plus nbo?"

Same thing when you return NumJ = NumJ + NumNbo, you're returning a boolean. Booleans in VB are stored as 2 byte numbers, so there's no type mix up. Confusing, no doubt, but that's VB.