When Access fails to detect a duplicate function name, it means the generated code is in bad shape.
One way to deal with this problem is to occasionally use the /decompile switch.
You can read about it on the internet; simply search for microsoft access decompile (or similar).
It also can make a significant reduction in size of your database.
One harmful side-effect I have noticed of decompile is that it may mess up type names with spaces.
For example, say you have a declaration such as
dim MyForm as [Forms_User Validation Form]
the decompile process sometimes removes the brackets. Simply put them back in.
Additionally, I have occasionally noted that decompiling changes a 'class' module into a regular module. Again, this is easily repaired by copying the code from the module into, say, the notepad, erasing the module, creating a new class module, and pasting the code back in.
However, the benefits of decompile (sometimes you are unable to access module code because the intermediate code has gotten fried) far outweigh the disadvantages, and I perform it frequently.