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

#1 AnSanVal
28/09/2007 - 01:48 | Informe spam
Para eso tienes: =SUMA(rango)

Saludos desde Tenerife (Islas Canarias).
************************************************
"Arcano" escribió en el mensaje
news:
...que si selecciono un rango de celdas con numeros y los copio, los
pueda pegar Sumados en una sola celda destino?.
Gracias grupo..

Respuesta Responder a este mensaje
#2 Juan Gustavo Fogelman
28/09/2007 - 01:58 | Informe spam
se me ocurre que puedes crearte un boton que tome la seleccion y la
suma(rango seleccionada) en codigo
y copie el resultado al portapapeles

o sea: en ves de seleccionar copiar, pegar...
seria: seleccionar, boton, pegar

si no sabes como crear el codigo, pregunta
saludos

"Arcano" escribió en el mensaje
news:
...que si selecciono un rango de celdas con numeros y los copio, los
pueda pegar Sumados en una sola celda destino?.
Gracias grupo..

Respuesta Responder a este mensaje
#3 Ivan
28/09/2007 - 04:08 | Informe spam
...que si selecciono un rango de celdas con numeros y los copio, los
pueda pegar Sumados en una sola celda destino?.



hola chicos,

creo que por aqui podrian ir los tiros, pero hay algo, que no acabo de
ver, que me falta (aparte de solo controlar el pegado via Ctrl+V e
intro. habria que controlar el resto).

Con estos codigos se consigue la suma pero tras haber echo una
'pegada' previa, es decir si copias una seleccion y la pegas en una
celda fuera del rango, en vez de la suma te hace un pegado normal,
pero si a continuacion repites la operacion en una tercera celda si
que te devuelve solo la suma (a ver si alguien ve por que)

'en un modulo normal --
Public Sub teclas()
With Application: .OnKey "^{v}": .OnKey "{enter}": .OnKey "{return}":
End With
End Sub
Public Sub SumarSeleccion()
Dim rango As Range
Set rango = Application.PreviousSelections(1)
If Not Not Intersect(ActiveCell, rango) Is Nothing Then _
ActiveCell = Application.Sum(rango)
Set rango = Nothing
With Application
.OnKey "^{v}": .OnKey "{enter}": .OnKey "{return}": .CutCopyMode False
End With
End Sub

'--en el modulo de la hoja --
Private Sub Worksheet_Change(ByVal Target As Range)
teclas
With Application
If .CutCopyMode = xlCopy Then
.Goto (Selection.Cells)
.OnKey "^{v}", "SumarSeleccion"
.OnKey "{enter}", "SumarSeleccion"
.OnKey "{return}", "SumarSeleccion"
End If
End With
End Sub


solo como experimento

un saludo
Ivan
Respuesta Responder a este mensaje
#4 Ivan
29/09/2007 - 01:50 | Informe spam
hola de nuevo,

aqui va otra propuesta que hace lo que creo que pides (lo que no se es lo que pueda afectar a las formulas que puedas
tener alrrededor de la celda de destino)

lo que hace es, cuando seleccionas un rango y lo copias, si lo pegas en otro rango, en vez de pegar el contenido te pega
su suma (si es texto da 0) en la primera celda de la seleccion de destino. OJO: ya no podrias copiar pegar en esa hoja,
al menos tal y como esta planteado (quizas podrias restringir el tema a determinados rangos)

otro detalle: antes de probarla sal de esa hoja y vuelve a ella, para que se dispare el activate de la hoja (si no, la
1ª vez no te funcionara)

bueno, un saludo y al final va el codigo (seguro que simplificable)
Ivan

'**************en el modulo de la hoja*************
'
Dim Total As Double, rngSuma As Range, Datos
'-
Private Sub Worksheet_Activate()
Application.Goto (Selection.Cells)
End Sub
'
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
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngPrevio As Range
If Application.CutCopyMode = xlCopy Then
Set rngPrevio = Application.PreviousSelections(1)
Total = Application.Sum(rngPrevio.Value)
With Selection
Set rngSuma = Range(.Cells(1), .Cells(1).Offset( _
rngPrevio.Rows.Count - 1, rngPrevio.Columns.Count - 1))
End With
Set rngPrevio = Nothing: Datos = rngSuma.Value
Else
Application.Goto (Selection.Cells)
If Not rngSuma Is Nothing Then Set rngSuma = Nothing
End If
End Sub
'******************************************************
Respuesta Responder a este mensaje
#5 Héctor Miguel
29/09/2007 - 08:55 | Informe spam
hola, cristian !

...que si selecciono un rango de celdas con numeros y los copio
los pueda pegar Sumados en una sola celda destino?.



-> prueba usando el portapapeles de windows por un procedimiento al que le asiges un atajo de teclado
-> p.e. combinando ctrl+mayus+C [la "c" no es neesario que sea mayusculas, pero SI la combinacion *asignada*]
[el *resultado* lo tendras disponible en tanto no lo sustituyas por algo mas]
solo que necesitaras *pegarlo* siempre por medio del ctrl+V

saludos,
hector.

1) en el modulo de codigo del libro [Thisorkbook]

Private Sub Workbook_Open()
Application.OnKey "^+c", "copiar_suma"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^+c"
End Sub

2) en un modulo de codigo estandar/general/normal/...

Option Private Module
Sub Copiar_Suma()
If TypeName(Selection) <> "Range" Then Exit Sub
Dim Mi_Suma As DataObject
Set Mi_Suma = New DataObject
Mi_Suma.SetText Application.Sum(Selection)
Mi_Suma.PutInClipboard
Set Mi_Suma = Nothing
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida