From MSDN:
IsEmpty only returns meaningful information for variants
You can also use IsMissing()
to check if an optional argument was passed to the function, but this works only on Variants as well. You might want to check if the optional argument has a value equal to his default value, which is zero for dates.