Desafío: Es posible...

28/09/2007 - 01:12 por Arcano | Informe spam
...que si selecciono un rango de celdas con numeros y los copio, los
pueda pegar Sumados en una sola celda destino?.
Gracias grupo..

Preguntas similare

Leer las respuestas

#6 Ivan
29/09/2007 - 15:47 | Informe spam
hola Hector (y compañia),

otras cuantas perlas 'pa la saca'.

que sencillo parece hecho por alguien que 'sabe'.

Y yo que me tirado unas cuantas horas dandome cabezazos con el
change, selectionchange, onkey, y compañia, para encima llegar a una
solucion bastante incompleta/imperfecta

en fin, la envidia sera todo lo mala que sea, pero hay veces que no se
puede evitar ...

bueno, de nuevo gracias por lo que me toca

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#7 Ivan
29/09/2007 - 20:31 | Informe spam
hola de nuevo,

a la espera del regreso de Cristian, una consulta sobre una duda
surjida mientras preparaba la propuesta:

¿es posible cargar en una matriz, a ser posible del tipo
'matriz=rango', no solo los valores del rango, sino tambien sus
formulas si las hubiera (y ya puestos: los formatos, pej)?

me da la impresion de que no, al menos por esta via (matriz=rango)
pero me ha quedado la duda, y ...por si acaso, pues ahi va v la
consulta

en cualquier caso, gracias y otro saludo
ivan
Respuesta Responder a este mensaje
#8 Héctor Miguel
29/09/2007 - 20:55 | Informe spam
hola, Ivan !

... sobre una duda surjida mientras preparaba la propuesta:
es posible cargar en una matriz, a ser posible del tipo 'matriz=rango', no solo los valores del rango
sino tambien sus formulas si las hubiera (y ya puestos: los formatos, pej)?
me da la impresion de que no, al menos por esta via (matriz=rango)
pero me ha quedado la duda, y ...por si acaso, pues ahi va v la consulta



1) considera que en una matriz [o rango], cada uno de sus elementos [o celdas] es... *individual* ?
y por lo tanto, pudiera ser [totalmente] distinto de los demas elementos [tipo de datos y/o propiedades de celdas]

2) si un rango ya ha sido establecido como referencia de una variable/matriz [de su mismo tipo: *Range*]...
dentro de su misma referencia [variable/matriz/rango/...] puedes consultar tipos de datos y propiedades
[no se que utilidad pudiera tener *cargar* una o varias matrices segun el tipo de datos/propiedades de cada uno de sus elementos] -?-

3) si ya declaraste [p.e.] Dim Matriz As Range
si ya asignaste [p.e.] Set Matriz = <libro>.<hoja>.Range("xyz")
si quieres consultar el color de fondo de la celda en la segunda fila de la primer columna de la variable-rango *Matriz*...
-> MsgBox Matriz.Range("a2").Interior.ColorIndex
[o cualquier otra de las variantes para referencia a rangos y consulta/administracion de propiedades ?]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#9 Ivan
29/09/2007 - 22:39 | Informe spam
hola Hector, lo 1º gracias por la respuesta

1) considera que en una matriz [o rango], cada uno de sus elementos [o celdas] es... *individual* ?
y por lo tanto, pudiera ser [totalmente] distinto de los demas elementos [tipo de datos y/o propiedades de
celdas]







1.-> precisamente de ahi sugio mi duda. En mis 'experimentos' para este hilo (como habras visto bastante toscos) uno de
los problemas principales que me he encontrado es que,( al menos desde mi nivel y una vez tomado un camino diferente del
onKey de mi 1ª propuesta), una vez copiado el rango a sumar, la unica manera de detectar el pegado (para realmente
emular la accion copiar/pegar) es despues de este (al dispararse el change), con lo que el rango de destino se convierte
en un rango igual al de origen y no solo en la celda en la que [posiblemente] querria OP pegar la suma, y aunque a
posteriori se deje solo el valor de la suma en la celda 1 el resto de celdas equivalente al rango de origen (mismo nº de
filas y columnas), [que podria contener cualquier tipo de dato/formulas/etc y ademas variado] ya se habra visto arrasado
por el pegado

de ahi la necesidad de almacenar los datos/formulas/etc en 'otro sitio' antes de que se ejecute el pegado.

Inicialmente probe poniendo el contenido en otro rango para recuperarlo despues, pero esto rompia el cutcopymode, con
lo que el pegado no se efectuaba y tampoco el change tras el que meter la suma en la celda.

Al final he acabado metiendo el rango en una ¿matriz?, pero por lo que se ve esta solo devuelve los valores (aunque a lo
mejor no acabo de enterarme)

2) si un rango ya ha sido establecido como referencia de una variable/matriz [de su mismo tipo: *Range*]...
dentro de su misma referencia [variable/matriz/rango/...] puedes consultar tipos de datos y propiedades







2.->el problema es que me temo que en el momento de recuperar estos datos/propiedades [tras el pegado] el contenido del
rango ya habria cambiado, al de los de origen

>> [no se que utilidad pudiera tener *cargar* una o varias matrices segun el tipo de datos/propiedades de cada uno
>> de sus elementos] -?-



2bis.->creo que, aunque lo mismo no se me ha entendido nada, lo anteriormente expuesto explica este interes

de todas formas no se trata de una duda creada por la necesidad, pues realmente no se si alguna vez volvere a necesitar
algo parecido (y yo que OP optaria por tu solucion) pero como mi conocimiento sobre matrices es minimo,

y en concreto en este caso (que por lo que tengo entendido/creo recordar, realmente no se trata de una matriz, aunque se
pueda manejar como tal) de asignar a un variant un rango para poder disponer de sus elementos/celdas individulalmente o
en conjunto, no estaba/estoy seguro de si existe alguna manera de recuperar de la matriz alguna propiedad del rango que
no sea su valor puro y duro

3) si ya declaraste [p.e.] Dim Matriz As Range
si ya asignaste [p.e.] Set Matriz = <libro>.<hoja>.Range("xyz")
si quieres consultar el color de fondo de la celda en la segunda fila de la primer columna de la variable-rango
*Matriz*...




>> -> MsgBox Matriz.Range("a2").Interior.ColorIndex
[o cualquier otra de las variantes para referencia a rangos y consulta/administracion de propiedades ?]







en realida la declaracion es +/- asi=> Dim Matriz
y la asignacion => Matriz = .Range("xyz")
y la recuperacion de los datos=> .Range("xyz") = Matriz

de todas formas, leyendo tu respuesta me esta dando la impresion de que algo se me escapa, asi que me voy a liar a hacer
alguna prueba mas a ver lo que saco en claro

lo dicho, muchas gracias y un saludo
Ivan
Respuesta Responder a este mensaje
#10 Héctor Miguel
29/09/2007 - 23:52 | Informe spam
hola, Ivan !

1.-> precisamente... sugio mi duda una vez tomado un camino diferente del onKey de mi 1ª propuesta [...]



1) en el camino diferente del OnKey, la accion emuladora del *pega la suma* se ejecuta *automaticamente*...
en el siguiente evento '_change' [pero]... *siempre y cuando*... el pegado hubiera sido por un ctrl+V
[puesto que la apliacion estaria en modo de xlCopy, segun el codigo que experimentaste]...

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.CutCopyMode = xlCopy Then
Application.CutCopyMode = False
With rngSuma
.Value = Datos: .Cells(1) = Total: .Cells(1).Select
Set rngSuma = Nothing
End With
End If
End Sub



2) un -posible- *inconveniente* seria si luego de hacer el ctrl+C [poniendo a la aplicacion en modo de xlCopy]...
en vez de usar el *pegado* por ctrl+V... se pulsa/ra directamente la tecla {enter} [involuntariamente o por costumbre] -?-
por lo que al cancelarse el modo xlCopy, se omite el evento '_change' y ... [?]

3) la propuesta del *clipboard*, no admite un *pegado en directo* [por la tecla {enter}]
lo que [podria decirse que de alguna manera]... *obliga* al usuario a usar el ctrl+V ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida