Hola de nuevo Mike:
Coloca el siguiente código en el formulario.
- Código: Seleccionar todo
Dim x As Worksheet
Private Sub UserForm_Initialize()
Workbooks.Open Filename:=ThisWorkbook.Path & "\ORDEN.xls"
Set x = Workbooks(2).Worksheets("Hoja1")
End Sub
Private Sub CommandButton1_Click()
x.Cells(4, 5) = TextBox1
x.Cells(6, 5) = TextBox2
x.Cells(8, 5) = TextBox3
End Sub
Private Sub UserForm_Terminate()
Workbooks(2).Close
End Sub
Solo funcionará si no hay ningún otro libro abierto.
Fijate en el código, hemos definido 3 eventos:
Inicializar formulario(Se produce antes de mostrar el formulario)Abrimos el libro ORDEN y asignamos la "Hoja1" a la variable "x", observa
Set x =
Workbooks(2).Worksheets("Hoja1"), ese "2" es el número de libro abierto.
Excel asigna un correlativo desde 1 a todos los libro en el momento de abrirlos, de ahí la importancia de no tener ningún libro abierto en el momento de abrir el libro "HOLA".
Click en el botónAsigna los Textbox1,2 y 3 a las celdas de la columna 5("E") filas 2,4 y 6.
Terminar formulario(Se produce inmediatamente antes de cerrar el formulario)Cerramos el libro ORDEN. Si lo hemos modificado, nos preguntará si queremos guardarlo.
Conclusión principalPara poder modificar un libro desde otro a través de un formulario, debemos abrirlo primero.
También, y esto es una opinión personal, es conveniente separar el software(Macros, módulos y formularios) de los datos. Esto permite tener una única versión de nuestras aplicaciones y de aligerar el tamaño de nuestros archivos de datos, por lo que, el hecho de tener el formulario en un libro ("HOLA") y los datos en otro ("ORDEN"), me parece una idea
excelente.
Hasta la próxima
Salu2
Antoni