I don't use Variants and I don't agree with this kind of data type - especially when it is able to hold both a data type like integer, string and also an object. Wow, I cannot imagine how things could mess up when I'd wonder: what's in this Variant: a String, an Integer or... an Object ? Yeah, it may be an object, but... Object is so not definite... is it an instance of my class? or is it a control on a form ? Or maybe one of my Type-s ? In practice, you definitely have an idea of the data type you're using in some function, so there's little need to use Variants.
The only case where I used Variants (and this is because the language specification does not allow otherwise) is when I used ParamArrays. Even in that case, the first thing in my procedure was to convert the values of ParamArray to their data type, into local variables, and after that the procedure did its job. I may be in a great measure against Variants, but, as a programmer, I consider a great leak not to know with what data types I'm dealing with (my app is dealing with) at a certain moment...
Keep Up with TechRepublic