Macro para crear nuevas hojas a partir de un indice.

Necesito una macro que a partir de un hoja "Indice" cree una nueva hoja en el libro con un formato ya preestablecido.

Boton: Nuevo Cliente:--> Valida con el indice si ya existe el cliente, luego crea la nueva hoja con el formato preestablecido y se anexa el cliente a la columna del indice.

1 respuesta

Respuesta

Me puedes comentar lo siguiente:

¿En la hoja "Indice" vas a poner un botón para ejecutar la macro?

¿En la hoja "Indice" en qué columna tienes los clientes?

Entiendo que tienes los clientes en una lista, ¿si ya está en esa lista que no cree la hoja?

¿Si no está el cliente que cree la hoja?

¿Qué nombre se le pone a la hoja nueva?

Ya te envíe por correo el archivo donde estoy trabajando.

Saludos

Este es el código para crear un nuevo cliente desde un formulario

Private Sub CommandButton1_Click()
'Por.Dante Amor
    If TextBox1 = "" Then
        MsgBox "Capturar el cliente"
        TextBox1.SetFocus
        Exit Sub
    End If
    If TextBox2 = "" Then
        MsgBox "Capturar el número de trabajadores"
        TextBox2.SetFocus
        Exit Sub
    End If
    '
    u = Hoja1.Range("A" & Rows.Count).End(xlUp).Row + 1
    num = Application.Count(Hoja1.Columns("A")) + 1
    Hoja1.Cells(u, "A") = num
    Hoja1.Cells(u, "B") = TextBox1
    Hoja1.Cells(u, "C") = TextBox2
    cargar
    TextBox1 = ""
    TextBox2 = ""
    MsgBox "Cliente creado"
    TextBox1.SetFocus
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox1_Click()
'Por.Dante Amor
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    cargar
    TextBox1.SetFocus
End Sub
Sub cargar()
'Por.Dante Amor
    u = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
    ListBox1.RowSource = Hoja1.Name & "!A2:C" & u
End Sub

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Saludos. Dante Amor

¡Gracias! 

Hola Dante,

Gusto en Saludarte.

En el archivo que le envié por correo, si puedes observar tengo una hoja llamada "Resumen" “Hoja Principal”. Con la siguiente estructura:

ColumnaB/Nº

ColumnaC/CLIENTES

ColumnaD/N° DE TRABAJADORES

¿Qué hace esta hoja “Resumen”?, Me trae un resumen de los clientes que llevo, cantidad de trabajadores, Consultores y total de trabajadores que lleva de su cliente.

Estos son los trabajadores Activos y los que también egresan de esa lista por cada consultor.

¿Qué necesito en esta hoja "Resumen"?

 Lo siguiente:

 Un botón “Nuevo Cliente”. ¿Qué va hacer este botón?

Adicionar el siguiente número automáticamente en la Columna B.

 En la Columna C, el nuevo cliente,

¿Cómo se llena esta columna?, Pidiendo por el nuevo nombre y validándolo con los nombres que ya existen en la columna C.

¿Porque razón necesito que me lo valide?, porque este nombre del nuevo cliente, va crear una pestaña con su nombre.

Si notas mi columna C, va en conjunto, con las pestañas u hojas de la columna C. se puede decir que es como un índice.

Dime si hasta este punto se comprende la idea,

Saludos

Me podrías comentar sobre el código que te envié.

Si algo no está bien me puedes enviar un nuevo archivo con la explicación detallada de lo que falta.

Si es otra pregunta, podrías valorar esta pregunta y crear una nueva.

Hola:

No es otra pregunta, es la misma, y el ultimo archivo que le envié puede ver mi adelanto, el botón te da es como un resumen, y no es así, ya tengo la pestaña de resumen. Vea el archivo como va quedando mi hoja de Resumen.

Lo que hago manual de cortar pegar quiero que lo ejecute la macro.

Saludos

Te anexo la macro para verificar si existe la hoja del cliente, si no existe, crea la hoja con el "formato" y agrega al cliente en la columna "C".

Sub NuevoCliente()
'Por.Dante Amor
    Application.ScreenUpdating = False
    u = Range("B" & Rows.Count).End(xlUp).Row
    If u < 7 Then
        u = 7
        num = 1
    Else
        num = Range("B" & u) + 1
        u = u + 1
    End If
    cliente = InputBox("Ingresa el nombre del cliente", "NUEVO CLIENTE")
    If cliente = "" Then Exit Sub
    For Each h In Sheets
        If UCase(h.Name) = UCase(cliente) Then
            MsgBox "La hoja del cliente ya existe", vbExclamation
            Exit Sub
        End If
    Next
    '
    Rows(u & ":" & u).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(u, "B") = num
    Cells(u, "C") = cliente
    Sheets("formato").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = cliente
    Sheets("RESUMEN").Select
    Cells(u, "B").Select
    Application.ScreenUpdating = True
    MsgBox "Cliente agregado", vbInformation
End Sub

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas