¿Cómo pasar desde formulario de Excel un dato a la celda activa de otra hoja, si esa celda está vacía?.

Soy nueva por aquí y también en el mundo VBA, el caso es que necesito hacer una gestión de ubicaciones de un pequeño almacén, he creado un formulario con varios datos que se guardan en una hoja a modo de base de datos, en una segunda hoja, cada celda es una ubicación, quiero que al clickar sobre el formulario pida señalar la ubicación, (eso lo consigo), pero necesito que la celda que marco se convierta en activa y uno de los valores del formulario la rellene y no soy capaz de conseguirlo.

1 Respuesta

Respuesta
1

Una forma sería poner este código en un Módulo y asignar la macro al botón Buscar ubicación.

Public BuscandoUbicacion As Boolean
Sub Buscar_Ubicacion()
    BuscandoUbicacion = True
    ThisWorkbook.Sheets("Ubicaciones").Activate
End Sub

Luego, en la hoja Ubicaciones pones este código (clic derecho en el nombre de la hoja > Ver código).

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If BuscandoUbicacion = True Then
        Dim oHojaFormulario As Object
        Set oHojaFormulario = ThisWorkbook.Sheets("Formulario")
        oHojaFormulario.Activate
        Application.ActiveCell.Value = Target.Value
        BuscandoUbicacion = False
    End If
End Sub

Cuando estando en la hoja Formulario pulses el botón Buscar ubicación, se activará la hoja Ubicaciones donde deberás hacer dobleclic en la celda con la ubicación que quieres y esta se copiará a la celda que estuviese activa en la hoja Formulario.

A partir de aquí, puedes añadir algunas comprobaciones para que solo funcione si la celda activa se encuentra en una columna/fila determinada o si está vacía.

Hola ricohablador, muchas gracias por responder tan rápido. Creo que no me expliqué correctamente, no tengo una hoja donde meto el formulario, tengo un formulario de excel que activo desde un boton en la pestaña "ubicaciones", simplemente para que el que vaya a completarlo pueda ver ese "mapa" de las estanterías. cuando completo el formulario me completa una hoja que hace las veces de base de datos "BD", y lo que quiero es que me complete también la celda activa de la pestaña "ubicaciones", no me importaría hacerlo en dos pasos, he intentado integrar lo que me dices pero no lo he conseguido, tal vez porque no debería trabajar contra un formulario excel?. Nuevamente muchas gracias.

El formulario se abre al pulsar un botón, entiendo que introduces varios datos del producto y además la idea es introducir una ubicación de la hoja Ubicaciones.

El código anterior se puede adaptar si en ese formulario a su vez hay un botón de Seleccionar ubicación que oculte el formulario, deje hacer dobleclic en una celda de la hoja Ubicaciones y vuelva a aparecer el formulario para terminar de rellenar y guardar.

Otra forma es, teniendo previamente activa la celda que quieres en la hoja Ubicaciones (donde además tienes el botón que aparece el formulario), pues copiar el valor de dicha celda a la hoja BD cuando guardes el formulario; aunque la opción anterior me parece más usable.

Si sigo sin entenderte, una captura de pantalla podría ser de ayuda. :)

Hola Ricohablador, no es que no me entiendas es que no me explico.

en la hoja ubicaciones veo una especie de mapa, en cada ubicación ocupada aparece un número de solicitud y la fecha cuando debería liberarse esa ubicación, en esta hoja tengo el botón del formulario que pide entre otras cosas el número de solicitud y la ubicación, y todo esto se guarda en la hoja BD, lo que quiero es que ese número de solicitud también se guarde en la celda que representa la ubicación elegida, bien porque la tenga marcada como activa antes de abrir el formulario o bien porque desde el propio formulario me pida marcarla y me lo escriba ahí.

gracias y perdona que sea tan pesada 

Para hacer que, al pulsar GUARDAR REGISTRO, lo que haya en el campo SOLICITUD se copie en la celda activa, sería así.

Private Sub BotonGuardar_Click()
    Application.ActiveCell.Value = Formulario.TextSolicitud.Value
    ' Resto de código para guardar formulario en BD
    Formulario. Hide
End Sub

Siendo BotonGuardar el nombre del botón y TextSolicitud el nombre del campo de texto.

¡Gracias!  POR FÍN!!!! y mira que creo que en un inicio hice algo así, pero obviamente no. Muchas gracias por la ayuda Ricohablador

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas