Vba para crear una hoja de excel con los datos de ya una creada

Me gustaría saber si es posible con Vba crear una hoja nueva con los datos de una ya creada, me gustaría saber como es más fácil si al hacer click en el botón te saliera un cuadro de dialogo donde crear el nombre nuevo de la hoja o hacer que coloque el nombre con la fecha del día en que se esta trabajando trate con este código pero me da error Worksheets(VENTA).Name = Year(Date) & Month(Date) & Day(Date)

1 Respuesta

Respuesta
1

Pero qué necesitas, ¿crear una hoja o renombrar una hoja?

Si vas a crear una hoja nueva:

Sub crearhoja()
Sheets.Add
ActiveSheet.Name = Year(Date) & Month(Date) & Day(Date)
End Sub

Si vas a renombrar una hoja llamada "VENTA", la hoja "VENTA" debe existir, si ya existe entonces en la macro debe ir entre comillas:

sheets("VENTA").Name = Year(Date) & Month(Date) & Day(Date)

Saludos.Dante Amor

Si es lo que necesitas.

Lo que necesito es crear una hoja nueva tomando como base la hoja de ventas que estamos realizando de manera de llevar un control diario de las ventas " lo que quiero es crear una copia diaria de las ventas y que se guarde con el nombre de la fecha en la que se este trabajando"

Cuando dices: "tomando como base la hoja de ventas", ¿te refieres a que se haga una copia de toda la hoja?

Si es así, entonces utiliza esto:

Sub CopiarHojaVentas()
'Por.Dante Amor
    nombre = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00")
    For Each h In Sheets
        If h.Name = nombre Then
            MsgBox "Ya existe una hoja con la fecha de hoy"
            Exit Sub
        End If
    Next
    Sheets("Ventas").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = nombre
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

Así quedaría el código en tu botón

Private Sub CommandButton3_Click()
'Por.Dante Amor
    nombre = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00")
    For Each h In Sheets
        If h.Name = nombre Then
            MsgBox "Ya existe una hoja con la fecha de hoy"
            Exit Sub
        End If
    Next
    Sheets("Venta").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = nombre
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas