Como repetir la misma macro pero en diferentes filas y columnas ?

Sub Actualizar() ' sólo sirve para la fila 7 - Reemplazada por fórmula

Tengo la siguiente macro pero necesito que me lo haga hasta de la BX41 Hasta la BX41 lo mismo que BY7 hasta BY41 y lo mismo con BZ7 hasta BZ41.

Dim signo As String

Dim Valor1 As Integer, Valor2 As Integer, Total As Integer
Valor1 = ActiveSheet.Range("BX7").Value
Valor2 = ActiveSheet.Range("BY7").Value
signo = ActiveSheet.Range("BZ7").Value
Select Case signo
Case "+"
Total = Valor1 + Valor2
Case "-"
Total = Valor1 - Valor2
Case Else
Total = 0
End Select
ActiveSheet.Range("G7").Value = Total
End Sub
Sub Cont

Respuesta
1

Ojala te sirva la solución, es otra forma de representar las celdas, y con la función For - Next aplicas para solo el rango que pediste del BX7 al BX41, BY7 al BY41yBZ7 al BZ41. Respectivamente BX es la columna 76, BY es la columna 77 y BZ es la columna 78. Y la por es para evaluar cada fila con el rango de fila 7 a la fila 41. Entonces lo que porpongo es lo siguiente

Sub Cont()
Dim signo As String
Dim Valor1 As Integer, Valor2 As Integer, Total As Integer
For x = 7 To 41
Valor1 = ActiveSheet.Cells(x, 76).Value
Valor2 = ActiveSheet.Cells(x, 77).Value
signo = ActiveSheet.Cells(x, 78).Value
Select Case signo
Case "+"
Total = Valor1 + Valor2
Case "-"
Total = Valor1 - Valor2
Case Else
Total = 0
End Select
ActiveSheet.Cells(x, 7).Value = Total
Next x
End Sub

1 respuesta más de otro experto

Respuesta
1

.

Buenas, María

De acuerdo a lo que te sugerí anteriormente, esa misma rutina, tendrías que reemplazarla por la siguiente para que funcione sobre la fila de la celda activa:

Sub Cont()
Dim signo As String
Dim Valor1 As Integer, Valor2 As Integer, Total As Integer
Valor1 = ActiveSheet.Cells(ActiveCell.Row, Range("BX7").Column).Value
Valor2 = ActiveSheet.Cells(ActiveCell.Row, Range("BY7").Column).Value
signo = ActiveSheet.Cells(ActiveCell.Row, Range("BZ7").Column).Value
Select Case signo
Case "+"
Total = Valor1 + Valor2
Case "-"
Total = Valor1 - Valor2
Case Else
Total = 0
End Select
ActiveSheet.Cells(ActiveCell.Row, Range("G7").Column).Value = Total
End Sub

Ahora bien, esta macro se ejecuta sobre la fila actual. Si como dices, necesitas que se repita para un rango de filas, deberías usar una como la siguiente:

Sub ContFilas()
Dim signo As String
Dim Valor1 As Integer, Valor2 As Integer, Total As Integer
IniFila = 7
FinFila = 41
For LaFila = IniFila To FinFila
Valor1 = ActiveSheet.Cells(LaFila, Range("BX7").Column).Value
Valor2 = ActiveSheet.Cells(LaFila, Range("BY7").Column).Value
signo = ActiveSheet.Cells(LaFila, Range("BZ7").Column).Value
Select Case signo
Case "+"
Total = Valor1 + Valor2
Case "-"
Total = Valor1 - Valor2
Case Else
Total = 0
End Select
ActiveSheet.Cells(LaFila, Range("G7").Column).Value = Total
Next
MsgBox "Terminado!"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas