No acceder a otra hoja hasta no completar la información necesaria en un libro de excel

Tengo un libro de Excel organizado en 6 hojas. En la primera hoja (información general) es esencial rellenar ciertas celdas para que los cálculos en el resto de hojas sea correcto. Por tanto, hay alguna manera de que la aplicación no te deje acceder a las otras hojas hasta que no estén rellenadas las celdas obligatorias.

1 Respuesta

Respuesta
3

H o l a:

Pon las siguientes macros en los eventos de tu libro:

Private Sub Workbook_Open()
'Por.Dante Amor
    Sheets("información general").Select
End Sub
'
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Por.Dante Amor
    Application.ScreenUpdating = False
    hoja = Sh.Name
    Set h1 = Sheets("información general")
    If hoja = h1.Name Then
        Set celdas = h1.Range("A3, B4, C5:C8, D7:D9, E3")  'celdas a revisar
        For Each c In celdas
            If c = "" Then
                MsgBox "No se ha completado la información, no puede cambiar de hoja"
                Sh.Activate
                Exit For
            End If
        Next
    End If
    Application.ScreenUpdating = True
End Sub

Instrucciones para poner la macro en los eventos ThisWorkbook

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
  4. Del lado derecho copia la macro

Cambia en las macros "información general", por el nombre de tu hoja.

Cambia en la macro "A3, B4, C5:C8, D7:D9, E3", por las celdas que se tienen que revisar, puedes poner celdas individuales o rango de celdas.


Lo que hace la macro es revisar que las celdas estén llenas, te mostrará la hoja que seleccionaste, pero si no están completas las celdas, te aparecerá un mensaje: "No se ha completado la información, no puede cambiar de hoja", después de presionar Enter, te regresará a la hoja "información general".


Y, ¿si quisiera que me indicara en concreto la celda que me falta por rellenar?

Cambia la linea de la macro del msgbox por esta

msgbox "no puede cambiar la hoja, falta la celda: " & c.address

R ecuerda valorar la respuesta.

Te anexo la macro actualizada

Private Sub Workbook_Open()
'Por.Dante Amor
    Sheets("información general").Select
End Sub
'
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Por.Dante Amor
    Application.ScreenUpdating = False
    hoja = Sh.Name
    Set h1 = Sheets("información general")
    If hoja = h1.Name Then
        Set celdas = h1.Range("A3, B4, C5:C8, D7:D9, E3")  'celdas a revisar
        For Each c In celdas
            If c = "" Then
                MsgBox "No se ha completado la información, falta la celda " & c.Address
                Sh.Activate
                Exit For
            End If
        Next
    End If
    Application.ScreenUpdating = True
End Sub

La macro me funciona pero entra en conflicto con otra macro que tengo que sirve para borrar los datos introducidos en todas las celdas. Al darle a esta macro entra el un bucle y no puede pasar de la primera hoja. ¿Hay alguna manera de que esta macro de borrado no interfiera cuando actúe la macro de aviso de rellenado de celdas?

Tendría que revisar tu otra macro. La macro que te estoy enviando no actualiza en ningún momento la hoja.

R ecuerda valorar esta respuesta. Crea una nueva pregunta para revisar la otra macro y encontrar la forma de que no entre en un bucle.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas