Есть класс, в нём есть глобальные переменные
Их в нём, таки, как уже сказали, нет.
Когда под них выделяется память: в момент создания экземпляра класса или в момент первого использования этой переменной?
В момент создания экземпляра происходит выделение. "Первое использование" здесь вообще ни к чему. В принципе, оно косвенно может здесь появиться только под одной причине: у DAN-ссылок создания экземпляра происходит при первом использовании DAN-ссылки в контекте БК для этой ссылки, если ссылка сброшена.
Выделяется ли память при объявлении переменной объектного типа:
Dim A As Object
'и
Dim B as Class1
Если да, то сколько?
4 байта на каждую под указатель.
Содержит ли объект что-нибудь кроме ссылки на Vtbl и собственных данных?
Не регламентируется. Зависит от самого объекта, вернее от того, как его констрирует конструктор.
Есть ли возможность добавить глобальные переменные динамически? ReDim не считается. Нужен не массив, а именно переменная.
1) Куда добавить?
2) Как ты к ним будешь обращаться?
Можно ли для глобальной секции класса написать условие, при котором бы объявлялись или не объявлялись те или иные данные?
Вроде #, но чтобы проверки повторялись при выполнении, а не только при компиляции
Нет.
Стало быть запись "Dim B as Class1" нужна только разработчику для автодополнения... но ведь компилятор не игнорирует эту строку (получаются разные exe), значит что-то же всё-равно происходит
Эта строчка нужна компилятору в первую очередь. И нужна она ему, чтобы знать, что такое B, и во что компилировать обращения к B.
Antonariyто момент создания экземпляра класса = момент первого использования этой переменной.
Не правильно говоришь. Момент создания класса — момент использования оператора New, или момент первого обращения (любого) к DAN-ссылке, если та сброшена.
Если да, то сколько?
Сколько надо. Класс может содержать произвольное число приватных переменных, алкающих памяти, информацию о которых никак не получить. А еще может содержать ссылки на другие объекты, которые тоже хотят урвать свой кусок...
Т.к. "сколько" относилось к локальным переменным какой-то процедуры, то этот ответ тоже неверный.