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