Usar un formulario de consulta vba con varios formularios

-Expongo un poco lo que pretendo hacer a ver si es posible:

Yo tengo varios formularios creados en vba y también he creado uno que se llama calculadora.

Sé pasar ese dato a un formulario pero es un incordio tener que hacer varios frm_calculara para pasar dicho dato.

-¿Se puede hacer esto con un solo frm_calculadora?

1 Respuesta

Respuesta
2

Por supuesto que lo puedes hacer, tan solo necesitas pasarle el nombre del formulario al que quieres traspasar el dato (y digo tan solo si el campo de destino tiene el mismo nombre en todos los formularios)

Supongamos que actualmente en tu formulario calculadora tienes algo así para pasar el dato:

Forms!FormDestino.ControlDestino=Me.txtResultado

Donde FomDestino es el formulario y ControlDestino el cuadro de texto

Una forma sin mucha complicación sería, que al abrir FCalculadora (le llamaré así al formulario), le pases el nombre del formulario que lo llama, usando OpenArgs:

DoCmd. OpenForm "FCalculadora",,,,,, Me. Name

Y luego, en FCalculadora, cambiarías la linea que ten indicaba antes por esta otra:

Forms(Me.OpenArgs).ControlDestino=Me.txtResultado

Si el control de destino se llama distinto en los diferentes formularios, puedes pasar con el OpenArgs el nombre del formulario y el del control, con algún separador a tu elección (en el ejemplo uso la barra inclinada "/"), y luego dividir esa cadena de texto:

DoCmd. OpenForm "FCalculadora",,,,,, Me.Name & "/NombreControlDestino"

Y en FCalculadora (te lo pongo en distintas lineas para mayor claridad)

Dim nomForm AS String, nomControl As String

nomForm=Left(Me.Openargs, Len(Me.Openargs)-Instr(Me.Openargs,"/")-1)

nomControl=Right(Me.Openargs, Len(Me.Openargs)-Instr(Me.Openargs,"/"))

Forms(nomForm).Controls(nomControl)=Me.txtResultado

A ver si con estas indicaciones "generales" lo consigues hacer.

Muchísimas gracias, perfecto en accesos era justo lo que quería. Si me permites otra pregunta. Se puede hacer algo similar en vba pero con Excel?. Agradecido como siempre y buen día.

En Excel, del que no tengo tanta experiencia, supongo que podrías hacer algo similar, pero usando variables públicas para pasar los nombres del formulario y control.

¡Gracias! Voy intentarlo.

Buenos días, he intentado probar la segunda opción y me da error, no sé donde he metido la pata. Te detallo nombre formularios: Formulario1,Formulario2,Formulario3. los campos donde ingreso el resultado de la calculadora es importe, total, suma. El código que he puesto en el comando24(el que abre la calculadora) es: Docmd.OpenForm "frmCalculadora",,,,,,Me.Name & "/suma"

En el botón que envía el resultado lo he puesto igual que has enviado.

Saludos de nuevo y buen día

Acabo de hacer una prueba y hay un error en el código que te envié (por hacerlo "de cabeza" y sin comprobarlo)

Ponlo así (cambia únicamente la segunda línea, que le sobra la función Len() ):

Dim nomForm As String, nomControl As String
nomForm = Left(Me.OpenArgs, InStr(Me.OpenArgs, "/") - 1)
nomControl = Right(Me.OpenArgs, Len(Me.OpenArgs) - InStr(Me.OpenArgs, "/"))
Forms(nomForm).Controls(nomControl) = Me.txtResultado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas