PasteSpecial

24/03/2007 - 02:03 por Orfao | Informe spam
Hola !
en cualquier parte de mi codigo tengo p.ej:
' COPIO LOS VALORES
Range("C1:C3")=Range("A1:A3")

'COPIO LOS FORMATOS
Range("A1:A3").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
...
la pregunta es como sustituyo la copia de formatos por codigo similar a la
copia de valores para evitar el copy...Paste y asi no tener que usar el
Screnupdating
algo como p.eJ...

Range("C1:C3").Formats=Range("A1:A3").Formats
GRACIAS...
Me alimento del conocimiento de todos

Preguntas similare

Leer las respuestas

#1 KL
24/03/2007 - 04:05 | Informe spam
y por que no hacer:

Sub test()
[A1:A3].Copy [C1:C3]
[C1:C3].Value = [A1:A3].Value
End Sub


Saludos,
KL


"Orfao" wrote in message news:
Hola !
en cualquier parte de mi codigo tengo p.ej:
' COPIO LOS VALORES
Range("C1:C3")=Range("A1:A3")

'COPIO LOS FORMATOS
Range("A1:A3").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
...
la pregunta es como sustituyo la copia de formatos por codigo similar a la
copia de valores para evitar el copy...Paste y asi no tener que usar el
Screnupdating
algo como p.eJ...

Range("C1:C3").Formats=Range("A1:A3").Formats
GRACIAS...
Me alimento del conocimiento de todos
Respuesta Responder a este mensaje
#2 Héctor Miguel
24/03/2007 - 04:12 | Informe spam
hola, mises !

otra alternativa [si lo que te interesa es solamente 'administrar' los formatos]...

1) si quieres copiar formatos [me temo que]... no re vas a poder 'escapar' del copy... paste :-((
[recuerda que un objeto format incluye 'otras' propiedades como .Font y este a su vez .Font.Name, Font.Size, etc. etc. etc.]

2) si lo que quieres es evitar el 'screenupdating' [incluso si lo tienes en false]...
prueba usando las propiedades de los objetos SIN seleccionarlos [previamente], algo asi como:

Worksheets("origen").Range("123").Copy
Worksheets("destino").Range("celda1").PasteSpecial xlPasteFormats
Application.CutCopyMode = False

saludos,
hector.

__ la consulta original __
en cualquier parte de mi codigo tengo p.ej:
' COPIO LOS VALORES
Range("C1:C3")=Range("A1:A3")

'COPIO LOS FORMATOS
Range("A1:A3").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
...
... como sustituyo la copia de formatos por codigo similar a la copia de valores
para evitar el copy...Paste y asi no tener que usar el Screnupdating algo como p.eJ...

Range("C1:C3").Formats=Range("A1:A3").Formats
Respuesta Responder a este mensaje
#3 Orfao
24/03/2007 - 05:17 | Informe spam
Gracias por Hector & KL

El problema es que tengo rangos con algunas celdas combinadas y no me
interesa copiar las formulas solo valores con su respectico formato
ademas tengo excesivos comtroles incrustados en la hoja y esta operacion se
repite para cerca de cien rangos diferentes
y necesito ir viendo el avance de la operacion con un objeto incrustado que
simula un una especie de "barra de progreso" por lo que no puedo usar el
ScreenUpdate ya que parpadea demasiado la pantalla al tener demasiados
controles.
alguna sugerencia, iea, solucion ???

Me alimento del conocimiento de todos


"Héctor Miguel" wrote:

hola, mises !

otra alternativa [si lo que te interesa es solamente 'administrar' los formatos]...

1) si quieres copiar formatos [me temo que]... no re vas a poder 'escapar' del copy... paste :-((
[recuerda que un objeto format incluye 'otras' propiedades como .Font y este a su vez .Font.Name, Font.Size, etc. etc. etc.]

2) si lo que quieres es evitar el 'screenupdating' [incluso si lo tienes en false]...
prueba usando las propiedades de los objetos SIN seleccionarlos [previamente], algo asi como:

Worksheets("origen").Range("123").Copy
Worksheets("destino").Range("celda1").PasteSpecial xlPasteFormats
Application.CutCopyMode = False

saludos,
hector.

__ la consulta original __
> en cualquier parte de mi codigo tengo p.ej:
> ' COPIO LOS VALORES
> Range("C1:C3")=Range("A1:A3")
>
> 'COPIO LOS FORMATOS
> Range("A1:A3").Select
> Selection.Copy
> Range("C1").Select
> Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
> SkipBlanks:=False, Transpose:=False
> ...
> ... como sustituyo la copia de formatos por codigo similar a la copia de valores
> para evitar el copy...Paste y asi no tener que usar el Screnupdating algo como p.eJ...
>
> Range("C1:C3").Formats=Range("A1:A3").Formats



Respuesta Responder a este mensaje
#4 Héctor Miguel
24/03/2007 - 06:19 | Informe spam
hola, moises !

El problema es que tengo rangos con algunas celdas combinadas y... me interesa copiar... solo valores con su respectico formato
ademas tengo excesivos comtroles incrustados en la hoja y esta operacion se repite para cerca de cien rangos diferentes
y necesito ir viendo el avance de la operacion con un objeto incrustado que simula un una especie de "barra de progreso"
por lo que no puedo usar el ScreenUpdate ya que parpadea demasiado la pantalla al tener demasiados controles.
alguna sugerencia, iea, solucion ???



1) [creo que] tu 'problema' son [realmente] dos o tres 'detalles' [de lo que has expuesto hasta ahora]...
a) los 'demasiados...' [objetos incrustados, rangos, etc.]
b) las celdas combinadas
c) el informe de avance por 'barra de progreso'

2) con relacion a los 'demasiados...' [creo que] saldrian sobrando los comentarios :))
con relacion al informe de avance [o barra de progreso]... habria que conocer el resto de los procesos -?-
[es probable que si dejas de seleccionar hojas y rangos, pudiera llegar a no ser necesario un informe de progreso] -?-

3) con relacion a las celdas combinadas... [mal 'negocio'] :-((
supongo que si de indico que hay una conversacion al respecto 'recientemente'...
es probable que no la 'encuentres' entre tanto correo-basura -?-
-> copio/pego al final dicha conversacion :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=hola, Des !

He creado filas de con varios rangos combinando celdas poco mas o menos de la siguiente manera:
La altura es de dos filas, el ancho vafariable de unos 15 celdas. [...]
Llego 1-1Rango con hTem.range("c80").end(xlup)
Llego 2-1Rango con hTem.range("c80").end(xlup).offset(0,1)
pero si hago:
hTem.range("c80").end(xlup).offset(0,2) no llego al 3-1 rango. Me quedo en el segundo.
... como se comporta offset(x,y) en el caso de un campo de celdas combinadas?
porque ha de ser una celda de la 1a columna del rango combinado el que tenga el "ascensor"?.
En este caso la columna C para los rangos 1-1 y 2-1?



1) [hasta donde se]... el ab/uso de celdas 'combinadas' puede resultar en...
-> 'toda una odisea' para la 'navegacion' por la hoja
[ya sea en la interfase con el usuario o tratando de navegar por codigo] :-((
[algo asi como 'una astilla...' que no te deja permanecer 'comodamente sentado'] :D

2) 'partiendo' de una celda combinada...
a) una instruccion -> .Offset(1, 1) 'salta' a la siguiente celda del area combinada de referencia inicial [pero]...
b) una instruccion -> .Offset(2, 2) ya no 'detecta' si la siguiente area esta combinada tambien :-((
c) 'similar' comportamiento tienen instrucciones del tipo .End(xl...) cuando se trata de 'extender' rangos :-(

3) situaciones como las anteriores, son algunas [entre otras] de las 'causas' por las que...
-> las celdas combinadas son 'odiosas' :))
revisa la siguiente conversacion: -> http://tinyurl.com/2l5j7e
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida