Los foros del Guille

elGuille.hosting: La oferta recomendada:
.NET 2.0, SQL Server, 1200MB, 10GB transf. por 9.95 Euros al mes

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

08/abr/2006
Por favor, no escribáis mensajes que impliquen cosas ilegales, ya que serán eliminados sin más aviso.
Gracias.

  Foro: Office.Programación Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57200 - repetir macro en execl
IDAsuntoFechaNick 
57200 repetir macro en execl13/09/13 22:15mendezhugo   
buenas programadores del foro del guille, tengo una hoja de excel con una macro que me ayuda a acumular valores en una celda, sin embargo requiero repetir esta programacion de la macro para que afecte a casi 300 celdas según se vallan acumulado valores en alguna de ellas, es con la intención de manejar una especie de inventario, la programacion es la siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Range("B1").Value = Range("B1").Value + Range("A1").Value
End If
End Sub

Esto me permite acumular valores escritos en A1 acumularlos en B1, pero requiero repetir esta programación para que la macro afecte desde la Celda A1 y B1, hasta la celda A300 y B300.

qué lineas de programacion se requieren para logar esto?
no se rian de mi, pero les comento, opté por escribir la programacion de esta macro 300 veces, jajaja y al final el me manda un error que dice que el procedimiento es demasiado largo, jajaja.
Perdonen mi inexperiencia en programación. espero me apoyen, saludos...
IDAsuntoFechaNick 
57262 Re: repetir macro en execl (Resp: 57200)18/10/13 12:59Pipe[hgjfkdls]   
hugo,

pues claramente repetir cualquier código 300 veces no esta bien, te envio un codigo que espero resuelva lo que deseas...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim desde As Range
Dim hasta As Range
Dim iD As Integer
Dim iT As Integer
Dim iR As Integer

Set desde = Range("A1:A300")
Set hasta = Range("B1:B300")

iD = desde.Cells(1, 1).Row

If (Union(desde, Target).Address = desde.Address) Then
iT = Target.Cells(1, 1).Row
iR = iT - iD + 1
hasta.Cells(iR, 1).Value = Val(hasta.Cells(iR, 1).Value) + Val(Target.Value)
End If

End Sub

cualquier duda lo comentas =).

Saludos,

[hgjfkdls]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 63 - App. iniciada: 23/09/2017 5:26:12 GMT - La hora GMT del servidor es: 23/09/2017 12:47:14 GMT