Bill,
I have a very simple question I ask to determine if I will use a UDF or class, "Is this functionality an extension of the underlying language?".
For me a message box is not an extension of the underlying language. However, calculating the factorial of a number is an extension of the underlying language. It all comes down to a personal decision.