Macro. Posición relativa

08/09/2005 - 22:51 por FeCel | Informe spam
Necesito crear una macro que haga lo siguiente:
1.- Insertar una celda en la posición del cursor, desplazando a la derecha
el resto de la fila;
2.- En la celda insertada, concatenar el contenido de la celda que está en
la misma fila, en la columna de la derecha, con el contenido de la celda que
esta en la misma fila, y dos columnas hacia la derecha. Ejemplo: si
inicialmente estaba en la posición B20, con el paso 1 anterior se insertó una
celda en blanco en esa posición. En B20 debe quedar C20 concatenado con D20.
3.- Luego transformar a valor el nuevo contenido de B20.
4.- Eliminar las celdas de las dos columnas hacia la derecha, desplazando el
resto hacia la izquierda. En el ejemplo, eliminar las celdas C20 y D20,
desplazando el resto a la izquierda.
Es necesario que las direcciones sean "relativas" pues la operación de
"juntar" dos celdas la necesito hacer en cualquier parte de la hoja.
Muchísimas gracias de antemano al que me pueda ayudar.
FeCel

Preguntas similare

Leer las respuestas

#1 FeCel
08/09/2005 - 23:21 | Informe spam
Parte de la macro es la siguiente:

Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "=+RC[1]&"" ""&RC[2]"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
****Como desplazar una posición a la derecha de la posición actual del
cursor***
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft

La línea en **** no se como se programa.
Gracias.
Atte
FeCel
Respuesta Responder a este mensaje
#2 julian-Vlc-Sp
09/09/2005 - 02:41 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias.

¿Conoces la grabadora de macros?

SALUDOS.
julian-Valencia-España

http://www.access-facil.tk
http://www.access-sin-codigo.tk

"FeCel" escribió en el mensaje
news:
Necesito crear una macro que haga lo siguiente:
1.- Insertar una celda en la posición del cursor, desplazando a la derecha
el resto de la fila;
2.- En la celda insertada, concatenar el contenido de la celda que está en
la misma fila, en la columna de la derecha, con el contenido de la celda
que
esta en la misma fila, y dos columnas hacia la derecha. Ejemplo: si
inicialmente estaba en la posición B20, con el paso 1 anterior se insertó
una
celda en blanco en esa posición. En B20 debe quedar C20 concatenado con
D20.
3.- Luego transformar a valor el nuevo contenido de B20.
4.- Eliminar las celdas de las dos columnas hacia la derecha, desplazando
el
resto hacia la izquierda. En el ejemplo, eliminar las celdas C20 y D20,
desplazando el resto a la izquierda.
Es necesario que las direcciones sean "relativas" pues la operación de
"juntar" dos celdas la necesito hacer en cualquier parte de la hoja.
Muchísimas gracias de antemano al que me pueda ayudar.
FeCel
Respuesta Responder a este mensaje
#3 FeCel
09/09/2005 - 15:55 | Informe spam
Julian,
Es muy útil. Es mi única forma de hacer las macros, pues no domino el
lenguaje de programación.
El problema de la grabadora de macros, es que en mi versión de Excel (2000),
cuando grabo la secuencia de teclas con el grabador de macros, la secuencia
se almacena con las direcciones absolutas (y no relativas a la posición en
que ejecute la macro). Posiblemente no sé como usar bien el grabador de
macros, y existe algún comando que permite transformar las referencias
absolutas en relativas.

Finalmente descubrí como hacer la macro. Viendo otras consultas en este
mismo sitio, hay un comando "Offset" que resuelve mi problema. En
definitiva, la macro quedó así:


Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "=+RC[1]&"" ""&RC[2]"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(0, 1).Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
ActiveCell.Offset(1, -1).Select

Saludos
FeCel

"julian-Vlc-Sp" escribió:


¿Conoces la grabadora de macros?

SALUDOS.
julian-Valencia-España

http://www.access-facil.tk
http://www.access-sin-codigo.tk

"FeCel" escribió en el mensaje
news:
> Necesito crear una macro que haga lo siguiente:
> 1.- Insertar una celda en la posición del cursor, desplazando a la derecha
> el resto de la fila;
> 2.- En la celda insertada, concatenar el contenido de la celda que está en
> la misma fila, en la columna de la derecha, con el contenido de la celda
> que
> esta en la misma fila, y dos columnas hacia la derecha. Ejemplo: si
> inicialmente estaba en la posición B20, con el paso 1 anterior se insertó
> una
> celda en blanco en esa posición. En B20 debe quedar C20 concatenado con
> D20.
> 3.- Luego transformar a valor el nuevo contenido de B20.
> 4.- Eliminar las celdas de las dos columnas hacia la derecha, desplazando
> el
> resto hacia la izquierda. En el ejemplo, eliminar las celdas C20 y D20,
> desplazando el resto a la izquierda.
> Es necesario que las direcciones sean "relativas" pues la operación de
> "juntar" dos celdas la necesito hacer en cualquier parte de la hoja.
> Muchísimas gracias de antemano al que me pueda ayudar.
> FeCel



Respuesta Responder a este mensaje
#4 KL
09/09/2005 - 17:24 | Informe spam
Hola FeCel,

Yo lo veo asi:

Dim c As Range: Set c = ActiveCell
With c
.Value = .Value & " " & .Offset(, 1).Value
.Offset(, 1).Delete Shift:=xlToLeft
End With

Saludos,
KL


"FeCel" wrote in message
news:
Julian,
Es muy util. Es mi unica forma de hacer las macros, pues no domino el
lenguaje de programacion.
El problema de la grabadora de macros, es que en mi version de Excel
(2000),
cuando grabo la secuencia de teclas con el grabador de macros, la
secuencia
se almacena con las direcciones absolutas (y no relativas a la posicion en
que ejecute la macro). Posiblemente no se como usar bien el grabador de
macros, y existe algun comando que permite transformar las referencias
absolutas en relativas.

Finalmente descubri como hacer la macro. Viendo otras consultas en este
mismo sitio, hay un comando "Offset" que resuelve mi problema. En
definitiva, la macro quedo asi:


Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "=+RC[1]&"" ""&RC[2]"
ActiveCell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
ActiveCell.Offset(0, 1).Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
ActiveCell.Offset(1, -1).Select

Saludos
FeCel

"julian-Vlc-Sp" escribio:


?Conoces la grabadora de macros?

SALUDOS.
julian-Valencia-Espana

http://www.access-facil.tk
http://www.access-sin-codigo.tk

"FeCel" escribio en el mensaje
news:
> Necesito crear una macro que haga lo siguiente:
> 1.- Insertar una celda en la posicion del cursor, desplazando a la
> derecha
> el resto de la fila;
> 2.- En la celda insertada, concatenar el contenido de la celda que esta
> en
> la misma fila, en la columna de la derecha, con el contenido de la
> celda
> que
> esta en la misma fila, y dos columnas hacia la derecha. Ejemplo: si
> inicialmente estaba en la posicion B20, con el paso 1 anterior se
> inserto
> una
> celda en blanco en esa posicion. En B20 debe quedar C20 concatenado con
> D20.
> 3.- Luego transformar a valor el nuevo contenido de B20.
> 4.- Eliminar las celdas de las dos columnas hacia la derecha,
> desplazando
> el
> resto hacia la izquierda. En el ejemplo, eliminar las celdas C20 y D20,
> desplazando el resto a la izquierda.
> Es necesario que las direcciones sean "relativas" pues la operacion de
> "juntar" dos celdas la necesito hacer en cualquier parte de la hoja.
> Muchisimas gracias de antemano al que me pueda ayudar.
> FeCel



Respuesta Responder a este mensaje
#5 FeCel
09/09/2005 - 17:46 | Informe spam
KL,
Excelente. Mucho más sencillo.
Muchas gracias.
FeCel

"KL" escribió:

Hola FeCel,

Yo lo veo asi:

Dim c As Range: Set c = ActiveCell
With c
.Value = .Value & " " & .Offset(, 1).Value
.Offset(, 1).Delete Shift:=xlToLeft
End With

Saludos,
KL


"FeCel" wrote in message
news:
> Julian,
> Es muy util. Es mi unica forma de hacer las macros, pues no domino el
> lenguaje de programacion.
> El problema de la grabadora de macros, es que en mi version de Excel
> (2000),
> cuando grabo la secuencia de teclas con el grabador de macros, la
> secuencia
> se almacena con las direcciones absolutas (y no relativas a la posicion en
> que ejecute la macro). Posiblemente no se como usar bien el grabador de
> macros, y existe algun comando que permite transformar las referencias
> absolutas en relativas.
>
> Finalmente descubri como hacer la macro. Viendo otras consultas en este
> mismo sitio, hay un comando "Offset" que resuelve mi problema. En
> definitiva, la macro quedo asi:
>
>
> Selection.Insert Shift:=xlToRight
> ActiveCell.FormulaR1C1 = "=+RC[1]&"" ""&RC[2]"
> ActiveCell.Select
> Selection.Copy
> Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
> _
> False, Transpose:=False
> ActiveCell.Offset(0, 1).Select
> Selection.Delete Shift:=xlToLeft
> Selection.Delete Shift:=xlToLeft
> ActiveCell.Offset(1, -1).Select
>
> Saludos
> FeCel
>
> "julian-Vlc-Sp" escribio:
>
>>
>> ?Conoces la grabadora de macros?
>>
>> SALUDOS.
>> julian-Valencia-Espana
>>
>> http://www.access-facil.tk
>> http://www.access-sin-codigo.tk
>>
>> "FeCel" escribio en el mensaje
>> news:
>> > Necesito crear una macro que haga lo siguiente:
>> > 1.- Insertar una celda en la posicion del cursor, desplazando a la
>> > derecha
>> > el resto de la fila;
>> > 2.- En la celda insertada, concatenar el contenido de la celda que esta
>> > en
>> > la misma fila, en la columna de la derecha, con el contenido de la
>> > celda
>> > que
>> > esta en la misma fila, y dos columnas hacia la derecha. Ejemplo: si
>> > inicialmente estaba en la posicion B20, con el paso 1 anterior se
>> > inserto
>> > una
>> > celda en blanco en esa posicion. En B20 debe quedar C20 concatenado con
>> > D20.
>> > 3.- Luego transformar a valor el nuevo contenido de B20.
>> > 4.- Eliminar las celdas de las dos columnas hacia la derecha,
>> > desplazando
>> > el
>> > resto hacia la izquierda. En el ejemplo, eliminar las celdas C20 y D20,
>> > desplazando el resto a la izquierda.
>> > Es necesario que las direcciones sean "relativas" pues la operacion de
>> > "juntar" dos celdas la necesito hacer en cualquier parte de la hoja.
>> > Muchisimas gracias de antemano al que me pueda ayudar.
>> > FeCel
>>
>>
>>



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