Foros del Web » Soporte técnico » Ofimática »

[SOLUCIONADO] Hoja nueva desde Vba excel

Estas en el tema de Hoja nueva desde Vba excel en el foro de Ofimática en Foros del Web. Hola a todos! Vamos a ver si alguien me puede ayudar con esto que me ha atascado. Tengo una hoja de excel que contiene una ...
  #1 (permalink)  
Antiguo 18/08/2015, 14:52
Avatar de davidhelios  
Fecha de Ingreso: agosto-2015
Ubicación: Alemania
Mensajes: 11
Antigüedad: 9 años, 3 meses
Puntos: 0
Hoja nueva desde Vba excel

Hola a todos!

Vamos a ver si alguien me puede ayudar con esto que me ha atascado.

Tengo una hoja de excel que contiene una lista de nombres y necesito que Vba me cree una hoja correspondiente a cada registro. He visto que eso se puede hacer pero el problema es que si introduzco el código en el evento open del libro, me crea las hojas cada vez que lo habro y si ya existen me deja el nombre de la hoja por defecto. Había pensado en crear cada hoja manualmente y olvidarme pero, el número de registros aumenta periódicamente y es tedioso crear cada hoja y dar formato a cada campo para que se queden iguales todas. Sin pasar por alto que se me podría olvidar crear alguna hoja nueva si se introducen demasiados registros nuevos.

Hablando claro, ¿alguien sabría decirme un código que lea la lista y reconozca si existe una hoja con ese nombre? en cuyo caso me gustaría que creara una para cada registro nuevo que se haya introducido desde la ultima vez. Algo asi como un código que cree una hoja por cada registro encontrado y valide si dichos registros ya tienen alguna hoja asignada al mismo nombre.

Dar formato a cada hoja es lo de menos porque he pensado en crear un módulo sencillo que lo haga y solo tendría que ejecutarlo o llamarlo desde cualquier linea de código, pero lo anterior me lleva de cabeza.

Muchas gracias a todos. y un saludo
  #2 (permalink)  
Antiguo 18/08/2015, 18:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Hoja nueva desde Vba excel

Lo más fácil sería crear cada hoja conforme agregas los registros y, de cualquier forma, tener tu macro para verificarlos.

Si ya tienes un código para crear hojas solo necesitas adaptarlo para que no se ejecute al abrir el libro, sino al agregar un registro o presionar un botón.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 18/08/2015, 20:00
Avatar de davidhelios  
Fecha de Ingreso: agosto-2015
Ubicación: Alemania
Mensajes: 11
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Hoja nueva desde Vba excel

Muchas gracias por responder tan rápido.

El problema es que use el código cuando lo use, siempre me crea alguna hoja de más. Peor aun, no se donde está el error por el que hace eso y sinceramente, yo preferiría que al introducir el nombre en el combobox y no encontrara ya el registro en la lista creara la página con el nombre, pero he probado varios códigos dentro del formulario y ninguno hace absolutamente nada. Lo unico que he conseguido fue que me ha borrado la lista de registros, menos mal que se crea o actualiza automáticamente con registros únicos de otra base de datos al abrir el libro y no he perdido nada importante.
  #4 (permalink)  
Antiguo 18/08/2015, 21:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Hoja nueva desde Vba excel

Sin ver el código con el que estás trabajando va a ser difícil poder ayudarte.

Haz doble click en el combo y se mostrará la sub correspondiente a cuando haces click; en el combo de la derecha selecciona "AfterUpdate" y te creará otra sub; dentro coloca solo:
Código:
' Reemplaza Combobox1 por el nombre que asignaste
MsgBox Combobox1.Value
Teclea un nombre, haz click y dinos si en el msgbox aparece lo que tecleaste.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 19/08/2015, 08:38
Avatar de davidhelios  
Fecha de Ingreso: agosto-2015
Ubicación: Alemania
Mensajes: 11
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Hoja nueva desde Vba excel

Hola Triby, he probado lo que me dices y todo va correcto.
Después he probado a meter el código que tengo para cargar los datos y crear una o varias hojas nuevas y no sale, me da un error en tiempo de ejecucion. Supongo que el código está diseñado para funcionar en otro sitio, pero lo ponga donde lo ponga me muestra el mismo error aunque varíe las celdas a valorar o intruduzca el valor del combobox. Supongo que tendrá algun error pero yo estoy aprendiendo ahora y no se depurarlo en condiciones.

Entonces, si al evento after_update del combobox le introduzco un comando if que contenga un worksheets.add con el valor del combo, crees que funcionaría?

Aun debería encontrar la sintaxis correcta, pero sabiendo que funcionaria ya lo afrontaria un poco menos mosqueado con el tema....jajaja. Llevo ya varios días comiéndome la cabeza para averiguar como crear las dichosas hojas con el valor del combobox...
  #6 (permalink)  
Antiguo 19/08/2015, 11:11
Avatar de davidhelios  
Fecha de Ingreso: agosto-2015
Ubicación: Alemania
Mensajes: 11
Antigüedad: 9 años, 3 meses
Puntos: 0
Información Respuesta: Hoja nueva desde Vba excel

Solucionado!

Al final he encontrado un código que me sirve, a saber:

1°- Creo un modulo (yo ya lo tenía creado para las hojas nuevas) e introduzco el siguiente código:

Function ExisteHoja() As Boolean
For h = 1 To Sheets.Count
If Sheets(h).Name = formulario_insercion.Combo_lugar.Value Then
ExisteHoja = True
Exit Function
Else
ExisteHoja = False
End If
Next h
End Function

2° En el evento AfterUpdate he introducido lo siguiente:

Private Sub Combo_lugar_AfterUpdate()

Call ExisteHoja

If ExisteHoja Then
Exit Sub
Else
Worksheets.Add
ActiveSheet.Name = Combo_lugar.Value
End If

End Sub

He marcado en verde el código propio y asi si alguien más necesita utilizar esta función solo tiene que editar en esa zona su código personal.

Gracias!

Etiquetas: excel, hoja, lista, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:25.