I think that's right.
I replied to shg's post but my comment didn't get posted here.
I made a mistake in my comment above. I originally declared the array as Variant (and dynamic) not String. But [I think] since it wasn't initialized I actually couldn't see the elements in the Watch window immediately after Dim (my mistake in saying I could see them) so I couldn't see the values.
After my Dims the next part of my VBA determines the size the array needs to be, then I ReDim at that size but had done so as Variant as shg had suggested. Immediately after the ReDim (as Variant) I can see the array elements in the Watch window and the values are all set to 'Empty' which contradicts what JoeMo said above. When I wrote strings to the array then overwrote with "" the Watch window showed "" as expected.
I just Dim'ed the array as String and immediately after the ReDim as String the Watch window shows the element values as "".
So it seems, as JoMo posted immediately above, that declaring as Variant sets the array elements to Empty.
I got curious as to what would happen if you dimmed an array as dynamic as Integer. ReDimmed as Integer, assigned a value to one of the elements then tried to 'erase' it by setting that element to ''".
Sub test()
Dim myarray() As Integer
ReDim myarray(5, 1) As Integer
myarray(1, 0) = 5
myarray(1, 0) = ""
End Sub
After the Dim you can't see the elements. After ReDim the elements are all set to 0. After setting (1,0) to 5, I can't erase by setting it to "" which makes sense that I can't set a an element that accepts integers to a string, even a null string. So it also makes sense that the error is Type mismatch. (not surprisingly, same results if set to Long or Double, but i was curious).
Thanks everyone for helping me work through this.