ekolis suggested switching the variables in the long if statement. That left you with the long statement, didn't make sense because the "if" forced equivalency testing, and left me wondering about VB6. CAN you define a constant value in it? (I know it's loosy-goosey about types.) I had no problem understanding the second version, but didn't know why I knew that was correct. Someone else (didn't record who) explained why. That's one of the nice things about coding, you don't have to explain why something will work, just know that it will. Someone coming later may scratch their head, but it gives them a chance to learn something about code they are supposed to know in the first place if they are reading it. The fact that you use "flag" later as a boolian operator will also give them a clue. (Assuming you aren't throwing in random lines of code that doesn't do anything but confuse a reader.) Just because you can do something doesn't mean it's a good idea. I'd want to shoot you myself, if you made "flag" a string, an integer, a floating number, a bool, and just for good measure throw in some "goto" branching. (I can't remember if the last is possible in VB6.)