A ver si es posible esto

25/06/2005 - 12:22 por Engel | Informe spam
Hola,

No se si lo que quiero hacer es posible, asi que lo mejor es
preguntar, veamos si me se explicar:

Tengo un libro con varias hojas
Cada una de estas hojas tiene un nombre diferente (A, B C, D, E)
Y en cada una tengo varias celdas entre ellas "Fecha, nº albaran,
importe, pagos)
En otro hoja del mismo libro tengo un resumen, y en una de la celdas
(Compras) de este resumen, una formula donde me suma el importe de la
celda "importe" de todas las demas hojas =SUMA('A:E'!C3)

Lo que quiero si fuera posible es lo siguiente:

Cuando el cursor apunta a esta celda (Compras) de la hoja resumen, que
de alguna forma pudiera ver los importes sumados a que hojas
corresponden y sus importes.

Espero haberme explcado.

Saludos,
Engel

Preguntas similare

Leer las respuestas

#6 Individuo Desconocido
25/06/2005 - 23:49 | Informe spam

Esto solo sirve para la tercera fila, estoy pensando la mejor forma de
hacerlo general (para las 380 filas)




a ver ahora...


En el evento Worksheet_Change de cada hoja debes incluir esto:

Private Sub Worksheet_Change(ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub

Y la funcion queda modificada de esta forma:

Function actualiza_comentario(fila)
celda = "C" + CStr(fila)
Sheets("resumen").Range(celda).Comment.Text Text:="+" & _
Sheets("A").Range(celda) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(celda) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(celda) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(celda) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(celda) & "(E)" & Chr$(10) & "=" & _
Sheets("resumen").Range(celda)
End Function

Para que esto funcione cada celda desde la C1 hasta la C381 debe tener un
comentario (aunque este vacio) para poder escribir en el y que no de error.
Como insertar 381 comentarios es una tarea muy aburrida y repetitiva, puedes
usar esta otra macro para que Excel lo haga por ti.

For n = 1 To 381
celda = "C" & CStr(n)
Range(celda).AddComment
Next n

Esta macro solo hay que ejecutarla una vez, por supuesto, para crear los
comentarios.
Respuesta Responder a este mensaje
#7 Engel
26/06/2005 - 10:02 | Informe spam
On Sat, 25 Jun 2005 22:49:10 +0100, "Individuo Desconocido"
wrote:


Esto solo sirve para la tercera fila, estoy pensando la mejor forma de
hacerlo general (para las 380 filas)




a ver ahora...


En el evento Worksheet_Change de cada hoja debes incluir esto:

Private Sub Worksheet_Change(ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub

Y la funcion queda modificada de esta forma:

Function actualiza_comentario(fila)
celda = "C" + CStr(fila)
Sheets("resumen").Range(celda).Comment.Text Text:="+" & _
Sheets("A").Range(celda) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(celda) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(celda) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(celda) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(celda) & "(E)" & Chr$(10) & "=" & _
Sheets("resumen").Range(celda)
End Function

Para que esto funcione cada celda desde la C1 hasta la C381 debe tener un
comentario (aunque este vacio) para poder escribir en el y que no de error.
Como insertar 381 comentarios es una tarea muy aburrida y repetitiva, puedes
usar esta otra macro para que Excel lo haga por ti.

For n = 1 To 381
celda = "C" & CStr(n)
Range(celda).AddComment
Next n

Esta macro solo hay que ejecutarla una vez, por supuesto, para crear los
comentarios.




Muchisimas gracias por tu interes, pero ahora tengo otro problema, y
es que no se como meter el evento y la funcion, te agradeceria me
indicaras como debo hacerlo.

Lo siento pero ya ves que en programacion un cero patatero.

Saludos,
Engel
Respuesta Responder a este mensaje
#8 KL
26/06/2005 - 12:01 | Informe spam
Hola chicos,

"Individuo Desconocido" escribio:
En el evento Worksheet_Change de cada hoja debes incluir esto:
Private Sub Worksheet_Change(ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub



Tambien podrias usar el evento SheetChange de ThisWorkbook para evitar
copiar la instruccion a todas las hojas:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub

?Y que pasa si los cambios se introducen en varias celdas a la vez? - solo
pasas una fila como argumento de la funcion.

Para que esto funcione cada celda desde la C1 hasta la C381 debe tener un
comentario (aunque este vacio) para poder escribir en el y que no de
error.




?Y que pasa si un cambio se introduce en una celda fuera de dicho rango? ?O
es que todas las celdas de la hoja deberian tener comentarios?
Pues, no necesariamente :-) bastaria con hacer un par de cambios al codigo:

Function actualiza_comentario(fila As Long)
On Error Resume Next
celda = "C" & fila
Sheets("resumen").Range(celda).ClearComments
Sheets("resumen").Range(celda).AddComment.Text Text:="+" & _
Sheets("A").Range(celda) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(celda) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(celda) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(celda) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(celda) & "(E)" & Chr$(10) & "=" & _
Sheets("resumen").Range(celda)
End Function

Tambien se podria hacer lo mismo por medio de una funcion personalizada:

1) pon la siguiente funcion en un modulo estandar

Function actualiza_comentario(Valor As Variant)
Dim rng As String, f As Long
On Error Resume Next
rng = Application.Caller.Address
With Application.Caller
.ClearComments
.AddComment _
"+" & Sheets("A").Range(rng) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(rng) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(rng) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(rng) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(rng) & "(E)" & Chr$(10) & "=" & Valor
End With
actualiza_comentario = Valor
End Function

2) escribe en la celda [C1] la siguiente formula:

=actualiza_comentario(SUM(A:E!C1))

De todas formas deciros que ambas funciones son bastante lentas por lo cual
si se aplican a un rango de 300 celdas o mas simultaneamente tardaran
bastante en ejecutarse y segun la potencia del PC podrian relentizarlo de
manera importante.

Saludos,
KL
Respuesta Responder a este mensaje
#9 KL
26/06/2005 - 12:09 | Informe spam
...perdon, la formula en castellano seria:

=actualiza_comentario(SUMA(A:E!C1))

Saludos,
KL


"KL" wrote in message
news:
Hola chicos,

"Individuo Desconocido" escribio:
En el evento Worksheet_Change de cada hoja debes incluir esto:
Private Sub Worksheet_Change(ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub



Tambien podrias usar el evento SheetChange de ThisWorkbook para evitar
copiar la instruccion a todas las hojas:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
actualiza_comentario (Target.Row)
End Sub

?Y que pasa si los cambios se introducen en varias celdas a la vez? - solo
pasas una fila como argumento de la funcion.

Para que esto funcione cada celda desde la C1 hasta la C381 debe tener un
comentario (aunque este vacio) para poder escribir en el y que no de
error.




?Y que pasa si un cambio se introduce en una celda fuera de dicho rango?
?O es que todas las celdas de la hoja deberian tener comentarios?
Pues, no necesariamente :-) bastaria con hacer un par de cambios al
codigo:

Function actualiza_comentario(fila As Long)
On Error Resume Next
celda = "C" & fila
Sheets("resumen").Range(celda).ClearComments
Sheets("resumen").Range(celda).AddComment.Text Text:="+" & _
Sheets("A").Range(celda) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(celda) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(celda) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(celda) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(celda) & "(E)" & Chr$(10) & "=" & _
Sheets("resumen").Range(celda)
End Function

Tambien se podria hacer lo mismo por medio de una funcion personalizada:

1) pon la siguiente funcion en un modulo estandar

Function actualiza_comentario(Valor As Variant)
Dim rng As String, f As Long
On Error Resume Next
rng = Application.Caller.Address
With Application.Caller
.ClearComments
.AddComment _
"+" & Sheets("A").Range(rng) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(rng) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(rng) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(rng) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(rng) & "(E)" & Chr$(10) & "=" & Valor
End With
actualiza_comentario = Valor
End Function

2) escribe en la celda [C1] la siguiente formula:

=actualiza_comentario(SUM(A:E!C1))

De todas formas deciros que ambas funciones son bastante lentas por lo
cual si se aplican a un rango de 300 celdas o mas simultaneamente tardaran
bastante en ejecutarse y segun la potencia del PC podrian relentizarlo de
manera importante.

Saludos,
KL

Respuesta Responder a este mensaje
#10 Engel
26/06/2005 - 13:10 | Informe spam
On Sun, 26 Jun 2005 12:01:28 +0200, "KL"
wrote:

Hola chicos,

"Individuo Desconocido" escribio:
En el evento Worksheet_Change de cada hoja debes incluir esto:
Private Sub Worksheet_Change(ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub



Tambien podrias usar el evento SheetChange de ThisWorkbook para evitar
copiar la instruccion a todas las hojas:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
actualiza_comentario (Target.Row)
End Sub

?Y que pasa si los cambios se introducen en varias celdas a la vez? - solo
pasas una fila como argumento de la funcion.

Para que esto funcione cada celda desde la C1 hasta la C381 debe tener un
comentario (aunque este vacio) para poder escribir en el y que no de
error.




?Y que pasa si un cambio se introduce en una celda fuera de dicho rango? ?O
es que todas las celdas de la hoja deberian tener comentarios?
Pues, no necesariamente :-) bastaria con hacer un par de cambios al codigo:

Function actualiza_comentario(fila As Long)
On Error Resume Next
celda = "C" & fila
Sheets("resumen").Range(celda).ClearComments
Sheets("resumen").Range(celda).AddComment.Text Text:="+" & _
Sheets("A").Range(celda) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(celda) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(celda) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(celda) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(celda) & "(E)" & Chr$(10) & "=" & _
Sheets("resumen").Range(celda)
End Function

Tambien se podria hacer lo mismo por medio de una funcion personalizada:

1) pon la siguiente funcion en un modulo estandar

Function actualiza_comentario(Valor As Variant)
Dim rng As String, f As Long
On Error Resume Next
rng = Application.Caller.Address
With Application.Caller
.ClearComments
.AddComment _
"+" & Sheets("A").Range(rng) & "(A)" & Chr$(10) & "+" & _
Sheets("B").Range(rng) & "(B)" & Chr$(10) & "+" & _
Sheets("C").Range(rng) & "(C)" & Chr$(10) & "+" & _
Sheets("D").Range(rng) & "(D)" & Chr$(10) & "+" & _
Sheets("E").Range(rng) & "(E)" & Chr$(10) & "=" & Valor
End With
actualiza_comentario = Valor
End Function

2) escribe en la celda [C1] la siguiente formula:

=actualiza_comentario(SUM(A:E!C1))

De todas formas deciros que ambas funciones son bastante lentas por lo cual
si se aplican a un rango de 300 celdas o mas simultaneamente tardaran
bastante en ejecutarse y segun la potencia del PC podrian relentizarlo de
manera importante.

Saludos,
KL



Hola KL,

Bueno finalmente he sido capaz de meter esta programacion en el libro,
y parece que funciona correctamente, solo dos cositas.

1 - Como que actualemtne el libro tiene unas 40 hojas (cada hoja
corresponde a un proveedor distinto) cuando apunto a la celda donde
esta el comentario y donde me enseña a que proveedores corresponde la
suma de las cantidades que contien la celda, resulta que la ventana de
comentario solo me muestra 5 proveedores debido a que es demasiado
pequeña ¿se podria hacer de alguna manera que esta ventanita del
comentario se adaptase al numero de lineas que tiene que mostrar?

2 - ¿Porque el en la venita del comentario me salen todos los
proveedores y no solo los que en ese dia le hemos comprado?, no se
podrias hacer que solo salieran en la venita del comentario aquellos
proveedores a los que corresponde las cantidades de de la suma de la
celda del comentario?

Saludos,
Engel
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida