Macro para copiar celdas

25/02/2009 - 14:38 por Martín | Informe spam
hola,

tengo el siguiente código que se me generó guardando una macro que me
interesa:

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////
Range("A2:A50").Select
Selection.Copy
Range("B2").Select
ActiveSheet.Paste
Selection.Replace What:="001", Replacement:="002", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Application.CutCopyMode = False
Selection.Copy
Range("C2").Select **********
ActiveSheet.Paste
Selection.Replace What:="002", Replacement:="003", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////

lo que hace es en la columna A tengo determinados datos, de los que me
interesa poner en la columna B los mismos pero reemplazando 001 por 002, asi
sucesivamente para la columna C 003, D004, etc.etc...


quiero armar el código para ponerlo en un botón,

puedo copiarlo muchas veces e ir cambiando el "C2" por "D2" "E2", ETC..y los
002, por 003 004, etc...

pero sé que con un for lo arreglo en una linea, el problema es como puedo
iterar con las columnas?? es decir en la linea que le puse el ********

tendría que poner algo como range(X).select y un for desde B2 hasta Z2?¿

Preguntas similare

Leer las respuestas

#1 Martín
25/02/2009 - 15:20 | Informe spam
y...ponele que quiero 50 valores,

de todas maneras sería un parámetro del FOR

osea algo como "for celda= a1 to z1"
vario el z1 en el código y listo

el formato de celda es General
no es fórmula, ni nro, ni nada, ya escribí el código de como reemplazo los
001 por 002, etc

la única duda que tengo es como me muevo en el for, hay una variable de tipo
celda?
y a la vez que me muevo obviamente incremento en 1 el valor que quiero
reemplazar...

saludos,

gracias!
"Héctor Miguel" escribió en el mensaje
news:
hola, Martín !

> tengo el siguiente codigo que se me genero guardando una macro que me


interesa: (...)
> ... en la columna A tengo determinados datos, de los que me interesa


poner en la columna B los mismos
> pero reemplazando 001 por 002, asi sucesivamente para la columna C 003,


D004, etc.etc...
> quiero armar el codigo para ponerlo en un boton
> puedo copiarlo muchas veces e ir cambiando el "C2" por "D2" "E2", ETC..y


los 002, por 003 004, etc...
> pero se que con un for lo arreglo en una linea, el problema es como


puedo iterar con las columnas??
> es decir en la linea que le puse el ********
> tendria que poner algo como range(X).select y un for desde B2 hasta


Z2?

- cual seria el alcance del "etc. etc. etc." ???
(es decir, colA1, colB2, colC, ... hasta donde ?)

- cual es el contenido de las celdas en el rango (datos o formulas) ???

comentas (si hubiera) mas detalles "en el tintero" ?
saludos,
hector.

__ el codigo expuesto __
> Range("A2:A50").Select
> Selection.Copy
> Range("B2").Select
> ActiveSheet.Paste
> Selection.Replace What:="001", Replacement:="002", LookAt:=xlPart, _
> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
> ReplaceFormat:=False
> Application.CutCopyMode = False
> Selection.Copy
> Range("C2").Select **********
> ActiveSheet.Paste
> Selection.Replace What:="002", Replacement:="003", LookAt:=xlPart, _
> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
> ReplaceFormat:=False



Respuesta Responder a este mensaje
#2 Héctor Miguel
25/02/2009 - 18:07 | Informe spam
hola, Martín !

tengo el siguiente codigo que se me genero guardando una macro que me interesa: (...)
... en la columna A tengo determinados datos, de los que me interesa poner en la columna B los mismos
pero reemplazando 001 por 002, asi sucesivamente para la columna C 003, D004, etc.etc...
quiero armar el codigo para ponerlo en un boton
puedo copiarlo muchas veces e ir cambiando el "C2" por "D2" "E2", ETC..y los 002, por 003 004, etc...
pero se que con un for lo arreglo en una linea, el problema es como puedo iterar con las columnas??
es decir en la linea que le puse el ********
tendria que poner algo como range(X).select y un for desde B2 hasta Z2?



- cual seria el alcance del "etc. etc. etc." ???
(es decir, colA1, colB2, colC, ... hasta donde ?)

- cual es el contenido de las celdas en el rango (datos o formulas) ???

comentas (si hubiera) mas detalles "en el tintero" ?
saludos,
hector.

__ el codigo expuesto __
Range("A2:A50").Select
Selection.Copy
Range("B2").Select
ActiveSheet.Paste
Selection.Replace What:="001", Replacement:="002", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
Selection.Copy
Range("C2").Select **********
ActiveSheet.Paste
Selection.Replace What:="002", Replacement:="003", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Respuesta Responder a este mensaje
#3 Héctor Miguel
25/02/2009 - 20:20 | Informe spam
hola, Martín !

y...ponele que quiero 50 valores,
de todas maneras seria un parametro del FOR
osea algo como "for celda= a1 to z1" vario el z1 en el codigo y listo
el formato de celda es General no es formula, ni nro, ni nada
ya escribi el codigo de como reemplazo los 001 por 002, etc
la unica duda que tengo es como me muevo en el for, hay una variable de tipo celda?
y a la vez que me muevo obviamente incremento en 1 el valor que quiero reemplazar...



ok... prueba cambiando la macro que grabaste/modificaste/... por una +/- como la siguiente:

Sub Copiar_mas_1()
Dim Derecha As Byte
With Range("a2:a10")
For Derecha = 1 To 3
.Offset(, Derecha).Value = _
Evaluate("transpose(transpose(substitute(" & .Address & _
",""001"",text(" & Derecha + 1 & ",""000""))))")
Next
End With
End Sub

- modifica el rango aplicable:
-> With Range("a2:a10")
- y establece cuantas columnas a la derecha necesitas:
-> For Derecha = 1 To 3

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida