Al salir de una macro no me devuelva a la hoja 10 que tiene una imagen

Tengo un pequeño problema que cuando ejecuto una de las macro no me devuelve a la hoja10 que es la actual se corre a la hoja de datos que he ejecutando la macro y otras macros sigue estando la hoja 10.

Todas las hojas tienen formulas y no me interesa que nadie las vea ni pueda manipularlas por error.

Las hojas quedan ocultas cuando seleccionas en Opciones, Avanzadas, Pestañas de hojas (ocultas)

La hoja10 que tiene una imagen como de bienvenida.

No se si el problema es ocasionado por el orden de las hojas o por otro motivo.

Necesito vuestra ayuda

1 Respuesta

Respuesta
3

Podrías poner la macro para revisarla.

Si la macro ejecuta otras macros, entonces también pon las demás macros.

Hola Dante Amor

Gracias por atender mi petición.

Os adjunto imágenes de lo que realizan las macros y sus códigos.

La primera macro habré Ver muebles o eliminar (UserEliminar). al marcar en el ListBox4 de momento no ejecuta nada hasta que no clicas Eliminar o Modificar.

Me he dado cuenta que cuando clicas Modificar es cuando sucede que de la hoja10 corre a la hoja1.

Y se abre la otra macro para poder modificar.

Te adjunto codigos.

UserForm (UserEliminar)

Dim i, items, xEmpleado

Private Sub btn_Eliminar_Click()
'Eliminar el registro
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "Esteve")
If Pregunta <> vbNo Then
Fila = Me.ListBox4.ListIndex + 6
Rows(Fila).Delete
Application.ScreenUpdating = True
End If

With Hoja1
' Sirve para contar las lieneas, y las inserta en X5
'.Range("X5").Value = .Range("X" & Rows.Count).End(xlUp).Row - 5
'Sirve para copiar la linea A45 hata la columna W45
.Range("A45:W45").Copy
' Inserta una nueva linea en A47 y desplaza la celda hacia bajo
.Range("A7").Insert Shift:=xlDown
' Pega un rango que se a copiado en el rango espedificado A45 hasta la coluna W45
.Range("A7").PasteSpecial

'Devuelve o establece el estado del modo cortar o copiar
Application.CutCopyMode = False

End With
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub CommandButton10_Click()
'Abrir el formulario para modificar

If Me.ListBox4.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "Esteve"
Else
End If
Modificar.Show

End Sub

Private Sub CommandButton9_Click()
'Vista previa
UserEliminar.Hide
Sheets("Hoja6").PrintPreview
'Sheets("tmp").[A1] = 1
UserEliminar.Show
End Sub

Private Sub ListBox4_Click()
'Activar la celda del registro elegido
Fila = Me.ListBox4.ListIndex + 6
For i = 1 To 4
Cells(Fila, 1).Activate
Next i
End Sub

Private Sub UserForm_Initialize()
'Dar formato al ListBox y traer datos de la tabla
With ListBox4
.ColumnCount = 14
.ColumnWidths = "22 pt;75 pt;400 pt;75 pt;0 pt;0 pt;20 pt;213 pt;0 pt;22 pt;185 pt;0 pt;22 pt;150 pt"
.ColumnHeads = True
End With
ListBox4.RowSource = "Tabla4"
End Sub

'-----------------
Private Sub UserForm_Activate()

'Antura y anchura que asignaremos a nuestro formulario
Dim height As Integer
Dim width As Integer

'Con esto hacemos invisible Excel
'Application.Visible = False

' Esta linea maximiza Excel
'Application.WindowState = xlMaximized
'Aqui capturamos la anchura y la altura de la aplicacion (que previamente hemos maximizado
width = Application.width
height = Application.height

'Asignamos al formulario la anchura y la altura recogidas
Me.width = width
Me.height = height

TextBox42.Text = Sheets("Hoja1").[C1]
TextBox41.Text = Sheets("Hoja1").[I1]
TextBox40.Text = Sheets("Hoja1").[I2]
TextBox43.Text = Sheets("Hoja1").[I3]
TextBox44.Text = Sheets("Hoja1").[L3]
TextBox45.Text = Sheets("Hoja1").[L2]
End Sub

UserForm (Modificar)

'Actualizar el registro
Private Sub CommandButton1_Click()
Sheets("hoja1").Select
For i = 1 To 15
'ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
'Next i

'se omite la col B
If i <> 5 And i <> 9 And i <> 12 And i <> 15 Then
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
End If
Next i

Unload Me
End Sub
'
'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub
'
'Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
Sheets("hoja1").Select
For i = 1 To 15
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox ("DEBE ABANDONAR EL FORMULARIO PULSANDO ACEPTAR O CANCELAR"), vbInformation, "MOBILIARIO DE COCINA - Esteve"
Cancel = 1
End If
End Sub

Haber si me puede ayudar

Un cordial saludo

Cuando entras al form Modificar tienes esto:

'Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
    Sheets("hoja1").Select
    For i = 1 To 15
        Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
    Next i
End Sub

Lo primero que hace es seleccionar la hoja1


Entonces para regresar a la hoja10, tendrías que ponerlo al momento de salir del form Modificar, puede ser así, esto es en el form Modificar:

'Cerrar formulario
Private Sub CommandButton2_Click()
    Sheets("hoja10").Select
    Unload Me
End Sub

Y también, en el mismo form modificar:

'Actualizar el registro
Private Sub CommandButton1_Click()
    Sheets("hoja1").Select
    For i = 1 To 15
        'ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
        'Next i
        'se omite la col B
        If i <> 5 And i <> 9 And i <> 12 And i <> 15 Then
            iveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
        End If
    Next i
    Sheets("hoja10").Select
    Unload Me
End Sub

Es decir, antes de cerrar el form modificar (Unload Me), debes seleccionar la hoja10.


[' Si es lo que necesitas. No olvides valorar la respuesta. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas