It seems that I was in error. I've just tested it exactly as you have it (in 2003) and it does indeed work. My memory must be faulty, as I'm sure I had an error recently where I tried to call a procedure with one argument as a positional one and another as a named argument. Possibly it was as simple as trying it the other way around (Indeed i tried it that way around and it complained immediately). Once the compiler detects a named argument it doesn't allow any further non-named ones.
Nevertheless, I would try making all the arguments of the same type in future. It is more consistent and I would say better practice. It may even allow your code to work in Access 2007 too, without further changes. BTW. For more on that see
Converting to Access 2007. It's a very useful page to read in your position.
Sorry for the incorrect advice earlier. It seems Access can still catch me out sometimes :-(