cd.NoValue is a number, which is not the same as a text string "cd.NoValue".
If a number is required, but you use a text string, VB/VBScript will try to automatically convert the number to a text string. For example, the text string "3" will be converted to the number 3. The text string "cd.NoValue" is not a number in VB/VBScript language, so it cannot be converted to a number. As a result, data1 is not an array of numbers, as it contains at least one non-number.
If you must use text strings instead of numbers, you may convert it with your own code. For example, you may "X" to mean no value, like: