Obviously, it is 4*400000*12 = 19,200,000 elements.
If you want know how much memory, multiply by the number of bytes for each type: Byte, Integer, Long, Single, Double, Decimal, Currency.
Enter "type long" or whatever into VBA help, and the help page tells you the number bytes.
For fixed-length strings like String*12, I presume (but I don't know) that VBA allocates just that amount of memory (e.g. 12 bytes).
Variable-length strings and Variant are a different animal altogether. AFAIK, MSFT does not document the overhead that it allocates for those types. You might do a google search to see if someone else has figured it out.
It would be nice if VBA had a sizeof() function. AFAIK, it does not.
We might use VarPtr arithmetic in order to infer the size of such types. But I would need to experiment with it myself (I'm not going to) in order to determine the reliability and the issues with such calculations.