Saltar al contenido

Guardar hoja con datos y sin fómulas


Recommended Posts

publicado

Hola a todos.

Tengo una hoja de Excel llamada Factura con varias fórmulas y código VBA. Hace unas semanas solicité ayuda para crear un pequeño código que me permitiese guardar cada factura que genero como otra hoja, con el nº de factura y sin las fórmulas.

Obtuve una buena respuesta que me ha estado funcionando, pero ahora se me plantea un pequeño problema y espero que alguien pueda ayudarme.

Me explico.

Como decía tengo donde la primera hoja es la plantilla de las facturas. Esta hoja se llama factura. En ella hay varias fórmulas y código.

En la celda M5 tengo la fecha del revés y en la N5 el contador de facturas, que se incrementa en uno cada vez que pulso en un botón, que guarda la factura en una hoja nueva con el nº de factura y después incrementa en uno el contador de facturas, además de regresar a la plantilla inicial (Factura) por si quiero hacer otra.

El nombre de la hoja guardada, que es el nº de factura, lo coge de la celda D11, que contiene una fórmula que concatena las celdas M5 y N5,

 =CONCATENAR(TEXTO($M$5;"aaaammdd");$N$5) [/CODE]

.

En su momento me pasaron este código para guardar la hoja sin fórmulas, para que las que contienen fórmulas tipo

[CODE]=HOTY()[/CODE]

, no se actualizasen al abrir de nuevo el libro. este código funciona correctamente y es el siguiente, que se encuentra en rojo:

[CODE]
Private Sub GUARDAR_Click()
' Guarda la factura en una hoja nueva con el nº de factura y sin fórmulas
Sheets(1).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets(1).Range("D11").Value
[COLOR=#ff0000][B]With ActiveSheet[/B][/COLOR]
[COLOR=#ff0000][B] .UsedRange = .UsedRange.Value[/B][/COLOR]
[COLOR=#ff0000][B]End With[/B][/COLOR]
'incrementa una celda
Sheets("Factura").Range("N5").Value = Sheets("Factura").Range("N5").Value + 1
' va a la misma hoja
Sheets("Factura").Activate
End Sub
[/CODE]

El problema que se me plantea ahora, es que he tenido que proteger la hoja, para que no me modifiquen algunas fórmulas. [i]Tengo bloqueadas todas las celdas menos las; M5, N5 y todas en las que tengo que introducir datos de la factura, cantidades, descripción, importes, etc[/i].

Y cuando le doy al botón que me guarda e incrementa uno el contado, me da un error 1004 (adjunto imagen) y me crea la hoja con el nº de factura como nombre, pero no me aumenta en uno el contador de la hoja factura, celda M5. el código se para en

[CODE] [B] .UsedRange = .UsedRange.Value [/B][/CODE]

.

¿Qué puedo hacer para que me funcione como antes y no me de error? Que me cree la hoja con el nº de factura y sin fórmulas, solo con los datos y me aumente en uno el contador, todo ello con la hoja protegida.

Este error sale igual si desbloqueo la celda D11.

Espero que alguien pueda ayudarme.

Muchas gracias de antemano a todos.

post-136973-145877008145_thumb.png

publicado

El error es porque la hoja está protegida, pues muy simple, desprotege la hoja antes del codigo y la proteges luego

ActiveSheet.Unprotect[COLOR=#ff0000][B]
With ActiveSheet
[/B][/COLOR] [COLOR=#ff0000][B] .UsedRange = .UsedRange.Value[/B][/COLOR]
[COLOR=#ff0000][B]End With
[/B][/COLOR]ActiveSheet.Protect[/CODE]

si tiene clave de protección puedes adicionarle [b]Password:="tu password"[/b], tanto al desbloqueo como al bloqueo, suerte[color=#ff0000][/color]

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.