Consulta para una macro de Excel

Necesito un poco de ayuda, serían dos preguntas

Primero: He creado una plantilla para presupuestos, dos hojas: portada y plantilla. Quiero crear una macro asignada a un botón que estará en la portada y que al pulsar cree una hoja nueva que sea igual a la plantilla ósea tal como está creada, y que al mismo tiempo asigne un número correlativo a la nueva hoja. Buscando por la red he encontrado un código que asignado a un botón en la misma hoja plantilla, me copia la plantilla y me asigna un número, hasta aquí perfecto, al realizar la copia también se copia el botón y si pulsas se crea una nueva hoja con numero siguiente, si en lugar de eso pulso desde la plantilla se crea una nueva con el nombre plantilla 2 y so sigue la orden, al mismo tiempo como está copiando la hoja que va delante también copia todos los datos El código es el siguiente: (J7 es donde va el numero)

Private Sub OptionButton1_Click()

Sub Insertar()

On Error Resume Next

Dim Nuevo_Nombre As String

Nuevo_Nombre = ActiveSheet.Range("J7").Value + 1

ActiveSheet.copy After:=Sheets(Worksheets.Count)

ActiveSheet.Name = Nuevo_Nombre

ActiveSheet.Range("J7").Value = Nuevo_Nombre

End Sub

Por otra parte, quiero que en la portada se reflejen las nuevas hojas que se van creando, ejemplo:

Expediente Cliente Estado

101 cliente prueba proceso

1 respuesta

Respuesta
1

Debes modificar un poco la macro, quedaría así:

Private Sub OptionButton1_Click()

Sub Insertar()

On Error Resume Next

Dim Nuevo_Nombre As String

ActiveSheet.Range("J7").Value = ActiveSheet.Range("J7").Value +1

Nuevo_Nombre = ActiveSheet.Range("J7").Value

ActiveSheet.copy After:=Sheets(Worksheets.Count)

ActiveSheet.Name = Nuevo_Nombre

End Sub

La segunda pregunta no entiendo a qué te refieres

Hola gracias por responder, con esa modificación se resuelve el que desde el botón haga bien las hojas correlativas, pero claro el botón con ese código tienen que estar en la plantilla para que lo haga bien, yo lo que decía era estar el botón en portada y mandar copiar la plantilla. Que bueno me podría apañar así como esta. 

La otra pregunta era que en portada se fueran reflejando las hojas según se van creando ejemplo: varias casillas, una Numero expediente y debajo se van creando automáticamente hoja 101, hoja 102. hoja 103...... Otra casilla cliente, pues el expediente 101 el cliente es bar pepe y en la otra casilla estado de el expediente y aparece en proceso o cerrado. Así según se va creando expedientes(hojas) y se van rellenando , se van reflejando en la portada y me sirve luego de consulta rápida. Por eso decía de poner el botón en portada y que al mismo tiempo copia la plantilla limpia.

Gracias por el interes

Si quieres que desde la hoja Portada se ejecute la macro, debes poner esta:

Sub Insertar()

On Error Resume Next

Dim Nuevo_Nombre As String

Sheets("Plantilla").Range("J7").Value = Sheets("Plantilla").Range("J7").Value + 1

Nuevo_Nombre = Sheets("Plantilla").Range("J7").Value

Sheets("Plantilla").Copy After:=Sheets(Worksheets.Count)

ActiveSheet.Name = Nuevo_Nombre

End Sub

Lo único que he hecho es cambiar "Activesheet" por Sheets("Plantilla")

De la segunda parte, ¿puedes poner una imagen de ejemplo?

Lo he reflejado a mano como tendría que funcionar.

Suponiendo según la imagen que expediente, agencia y estado están en J7, G3 y C6. La macro es:

Sub Insertar()

On Error Resume Next
Dim Nuevo_Nombre As String
Sheets("Plantilla").Range("J7").Value = Sheets("Plantilla").Range("J7").Value + 1
Nuevo_Nombre = Sheets("Plantilla").Range("J7").Value
Sheets("Plantilla").Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = Nuevo_Nombre
Sheets("Portada").Select
Range("B7").Select
Do
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Value = ""
ActiveCell.FormulaLocal = "='" & Nuevo_Nombre & "'!J7"
ActiveCell.Offset(0, 1).FormulaLocal = "='" & Nuevo_Nombre & "'!G3"
ActiveCell.Offset(0, 2).FormulaLocal = "='" & Nuevo_Nombre & "'!C6"

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas