I have to say I've never heard of LabVIEW behaving that way in the sense of preferring an error-free VI over one that has an error, both with the same name. In all likelyhood you have a linkage problem. You can configure the search paths from the LabVIEW options (Tools->Options->Paths). You should fix your hierarchy by:
- Set the search path so it uses the top-level directory of where you have your subVIs as the first location.
- Restart LabVIEW.
- Open your top-level VI. You will see where it grabs the VIs.
- Verify that the correct VIs were loaded by looking at the VI Hierarchy (Browse->Show VI Hierarchy, then from the View menu select "Show VI Path in Label").
If you see that VIs were pulled in from the wrong place:
- Close the top-level VI without saving any changes.
- Open the subVIs from the correct place.
- Open your top-level VI. It will use the VIs in memory.
- Re-verify the VI Hierarchy.
Once you're satisfied everything is linked correctly, save the top-level VI and all VIs.
At this point you will probably want to reset the search path to the default value so it doesn't screw up other projects you may work on in the future.