Asignar formulario a variable para su uso

Dudas sobre código
Avatar de Usuario
leadrudi
Nivel 4
Mensajes: 127
Registrado: Sab Oct 14, 2017 7:55 am

Asignar formulario a variable para su uso

Mensajepor leadrudi » Jue Oct 17, 2019 9:03 pm

De acuerdo a lo que encontré hice esto:

Código: Seleccionar todo

Dim vFormulario as Form
If CurrentProject.AllForms("frmUsuario").IsLoaded Then
    Set vFormulario = frmUsuario
ElseIf CurrentProject.AllForms("frmUsuario_Wiz").IsLoaded Then
    Set vFormulario = frmUsuario_Wiz
End If
Forms!vFormulario![txtXPass11].Value = Me.lstResultados.Value

Obviamente no funciona. ¿Hay alguna forma de hacer lo que propongo en el ejemplo?
Cabe aclarar que tanto el form origen como el destino están abiertos.
Pensé en usar en cada caso Forms!vFormulario![txtXPass11].Value = Me.lstResultados.Value con el nombre del formulario en reemplazo de vFormulario pero en realidad son varias líneas de código y creo que sería bueno simplificarlo y optimizarlo. Pero no sé hacerlo.
:?: :!: :idea: :arrow: :oops: :( :o :) :D :geek: :ugeek:

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1122
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Asignar formulario a variable para su uso

Mensajepor Sveinbjorn » Jue Oct 17, 2019 9:39 pm

Una forma sin complicarse :

Código: Seleccionar todo

Dim vFormulario as String
If CurrentProject.AllForms("frmUsuario").IsLoaded Then
    vFormulario = "frmUsuario"
ElseIf CurrentProject.AllForms("frmUsuario_Wiz").IsLoaded Then
    vFormulario = "frmUsuario_Wiz"
End If
Forms(vFormulario).[txtXPass11] = Me.lstResultados
Sveinbjorn El Rojo

Avatar de Usuario
leadrudi
Nivel 4
Mensajes: 127
Registrado: Sab Oct 14, 2017 7:55 am

Re: Asignar formulario a variable para su uso

Mensajepor leadrudi » Jue Oct 17, 2019 10:18 pm

Oh, qué bueno.
¿Qué diferencia hay en la interpretación que hace entre

Código: Seleccionar todo

Forms!frmSasa![txtXPass11].Value = Me.lstResultados.Value

y

Código: Seleccionar todo

Forms(vFormulario).[txtXPass11] = Me.lstResultados

O sea, ¿qué representa la separación con ! y ( ); ponerle o no .value, etc.?
:?: :!: :idea: :arrow: :oops: :( :o :) :D :geek: :ugeek:

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 1122
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Asignar formulario a variable para su uso

Mensajepor Sveinbjorn » Vie Oct 18, 2019 9:34 am

Son dos formas de hacer referencia a un elemento de una colección. La diferencia entre ambas líneas es la siguiente: en la primera (con ! o .) le dices que trabaje con un formulario llamado exactamente frmSasa y con el control llamado exactamente txtXPass11, mientras que con la segunda (con los paréntesis) le puedes indicar el nombre del formulario o el índice que tiene el formulario en la colección formularios. Por eso de la segunda forma le puedes pasar el nombre (o índice) a través de una variable y de la primera no.

En cuanto a Value, como es la propiedad por defecto, no es necesario escribirlo, porque si no le pones nada, entiende que se refiera a ella.
Sveinbjorn El Rojo


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados