Частный и публичный контроль области действия переменной или объекта, который вы объявляете.
Private
разрешит только членам соответствующего модуля / класса / что угодно для доступа к экземпляру
public
разрешит доступ к чему-либо в той же области, что и модуль / класс / что угодно.
Dim
по умолчанию общедоступный или закрытый, в зависимости от того, в чем вы работаете. Например, класс по умолчанию будет закрытым. Я предлагаю почитать об инкапсуляции и ООП, чтобы лучше это почувствовать.