Hola
En mi opinión, aunque no estemos usando el paradigma POO para programar, no es recomendable hacer públicos los controles de formulario, por el peligro de duplicar nombres de controles y generar problemas tontos a veces difíciles de resolver.
La forma correcta es hacer uso de las Propiedades para cambiar atributos de los controles en otros formularios. Como las propiedades son públicas por defecto, no es necesario nunca más hacer públicos los controles de formularios.
En el formulario donde quieres actuar:
En el otro formulario podrás acceder a la propiedad "mipropiedad" como a cualquier variable pública, como atributo del propio formulario, pero sin poner en peligro la integridad de los controles, es decir, sin romper el principio de encapsulamiento. Por ejemplo:
'para obtener y asignar su valor a una variable
unavariable = Otroformulario.mipropiedad
'para cambiar el valor de la propiedad
Otroformulario.mipropiedad = "un valor string, en este caso"
El ejemplo que he puesto usa una variable privada
$mivariable para almacenar el valor temporal que puede tomar la propiedad, pero podría haber usado directamente una propiedad de un control real, como el .Text de un TextBox, por ejemplo. O hacerlo dentro de los métodos _Read y _Write sin usar esa variable.
Quien haya programado en VB6 se acordará de los getters y setters, que es básicamente lo mismo que he explicado.
A alguien le puede parecer tedioso o innecesario todo esto, pero realmente es la forma de proceder correcta.
Saludos