An easy way to clear out the subcategory when the user selects the category is to use the script trigger "OnObjectMoify". So when a category is selected from the drop down list, a script is called that would clear the subcategory previous value and take the user to the subcategory list. Hope this helps.
Another way is using auto-enter calculation replaces existing values, Evaluate Always on Subcategory
FilterValues ( Self ; ValueListItems ( Get ( Filename ) ; "subcategory valuelist name" ) ) & Left ( Category ; 0 )