Como agregar hojas en Excel desde VBA con nombre modificado desde un Textbox

Estoy armando un control de Salud y la idea es la de asignar un código a cada persona. Estos códigos deberían representar su legajo virtual, el cual quiero que sea una hoja para cada uno.

Cuando se clickea en el userform, commandbutton "NUEVO" sale un nuevo userform con los siguientes elementos:

Textbox 1 : CÓDIGO

Textbox 2: Nombre y Apellido

Textbox 3: Fecha ALTA

Textbox 4: CUIL

Commandbutton1: ALTA - ACEPTAR

Al darle el ALTA, los datos se depositan en una lista en la hoja1 del libro, pero quiero que también cree una hoja con el código elegido.

¿Cómo puedo hacer?

1 respuesta

Respuesta
1

Te dejo las instrucciones necesarias ... estoy asumiendo que el nombre de la hoja es el código, ajusta esto a tu criterio

Private Sub CommandButton1_Click()
'x Elsamatilde
'luego de tus instrucciones de guardado, se crea la hoja
'ya se habrà hecho el control de que exista dato en el textbox1
'controla posible error de hoja duplicada o contenido en el textbox no vàlido para nombre de hoja
On Error GoTo sinhoja
Sheets.Add After:=Sheets(Sheets.Count)
'la nueva pasa a ser la hoja activa y se le asigna nombre
ActiveSheet.Name = TextBox1
'se colocan otros datos en la hoja
'Opcional: volver a la hoja de trabajo
Sheets(1).Select
Exit Sub
sinhoja:
MsgBox "No se pudo NOMBRAR la hoja. Asignale nombre manualmente.", , "ERROR"
End Sub

Sdos y no olvides valorar y finalizar si el tema queda resuelto.

Elsa

.

Si algo no se comprendió o necesitas algún ajuste podés continuar el tema.

Si está todo resuelto no olvides valorar y finalizar.

Sdos!

Hola Elsa! Muchas Gracias por tu respuesta. El lunes en mi trabajo estaría aplicando tu respuesta, pero estoy seguro que es lo que necesito. El lunes mismo te respondo y califico (se que lo tuyo es excelente) y si necesito más ayuda, te aviso!

Perdón por la demora! Y Muchas Gracias!

Quedo a la espera para dar por cerrado el tema.

Sdos!

Hola Elsa!, la hoja la crea, pero luego de que yo haga doble click puedo visualizarla.

Cuando ingreso los datos, la NUEVA HOJA no puedo verla hasta que hago nuevamente click en "ACEPTAR", entonces aparece el cuadro de "No se pudo nombrar la hoja" y automaticamente veo la hoja creada inicialmente y otra hoja ej: HOJACREADA y HOJA2.

Esto es lo que yo ingrese adicionalmente.

Private Sub CommandButton3_Click()
Application.ScreenUpdating = False

On Error GoTo sinhoja
Sheets.Add After:=Sheets(Sheets.Count)

ActiveSheet.Name = TextBox1

Sheets(2).Select
Range("A6").Select

general = Sheets("hoja2").Range("a36564").End(xlUp).Row + 1
Sheets("Hoja2").Range("a" & general).Value = TextBox1.Value
Sheets("Hoja2").Range("b" & general).Value = TextBox2.Value
Sheets("Hoja2").Range("c" & general).Value = TextBox3.Value
Sheets("Hoja2").Range("d" & general).Value = TextBox4.Value

Sheets(1).Select
Range("a1").Select

Unload Me

Exit Sub
sinhoja:
MsgBox "No se pudo NOMBRAR la hoja. Asignale nombre manualmente.", , "ERROR"

Application.ScreenUpdating = True

End Sub

Puedo visualizar la hoja en el libro al momento de crearla o tengo que crear otra siguiente?

Gracias!

Enviame el UF a mi correo porque estamos hablando de 2 botones de comando diferentes y perdemos tiempo sin datos precisos.

Mi correo aparece en la imagen.

Sdos

Elsa

Gracias! Te envíe recién el mail con el adjunto. Saludos!

Muchas Gracias por tu ayuda! Como siempre es excelente! Lo único que me quedo colgado es que cuando salta el cartel de "El código ya existe" de todas formas genera una hoja. Pero ya lo veré más adelante.

Muchas gracias Elsa!

El error es porque 1ro se crea la hoja y luego se le asigna el nombre... si aquí se presenta error xq quizás el nombre no es válido, lo que te queda es nombrarla manualmente. Pero la hoja ya está creada.

De todos modos sería bueno que canceles el control de error para que no te salte el mensaje en otro tipo de fallo.

Las intrucciones sería así, agregando la línea en negrita:

On Error GoTo sinhoja

Sheets.Add After:=Sheets(Sheets.Count)

ActiveSheet.Name = TextBox1

On Error GoTo 0

Si necesitas que no se guarde la hoja creada sino que se elimine, debes agregar también estas otras en negrita, al final. En ese caso también hay que modificar el mensaje.

sinhoja:

'evito el mensaje de que se elimina la hoja

Application.DisplayAlerts = False

ActiveSheet.Delete

Application.DisplayAlerts = True

MsgBox "No se pudo CREAR la hoja. ", , "ERROR"

Application.ScreenUpdating = True

End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas