Ejecutar macros en Microsoft Excel

Buenas! Por primera vez estoy trabajando con macros y ando más perdido que un pulpo en un garaje!
Te explico que es lo que quiero hacer, espero que me entiendas!
Tengo una tabla excel con muchas columnas, y la columna F a rellenar.
Empiezo sobre F11, pero solo relleno F11 si E11 tiene ya contenido.
En caso de que tenga contenido entonces miro la celda I11 y dependiendo de si el numero que hay dentro es negativo o positivo hago un calculo para rellenar F11 u otro.
Este bucle funciona hasta que en la columna E encontremos una celda vacía. En ese punto se acaba la macro.
Yo he estudiado programación hace años, y he hecho algo un poco al azar, guiándome con otros códigos que he visto por internet. Espero que no sea muy burro jejej, pero al ejecutar la macro me dice "No coinciden los tipos" ¿Algún tipo de mala inicialización?
Sub RellenarColumna()
x = 11
Do While Range("F" & x).Value <> ""
If Range("I" & x).Value < 0 Then
Range("E" & x).Value = "F" & x / (1 - Abs("I" & x))
Else
Range("E" & x).Value = ("F" & x) / ("I" & x) + 1
End If
x = x + 1
Loop
End Sub
Muchas gracias de antemano!
Respuesta
1
Estuve mirando tu macro, y deberías poner el siguiente código luego del Else:
Range("E" & x).Value = Range("F" & x).Value / Range("I" & x).Value + 1
El problema es que iba formando solamente " F11/I11" + 1, y tomaba NO como celdas sino como cadenas y por lo tanto no estaba realizando la operación y te daba el error.
Si vas a utilizar el valor de dichas celdas te recomiendo que cambies por lo que te he comentado más arriba. Si quieres introducir una fórmula en una celda específica, coloca el siguiente luego del Else:
Range("E" & x).Formula = "=("F" & x) /("I" & x) + 1"
Antes de tu definición de x=11 debes poner tambien el siguiente:
On error resume next
A fin de pasar los errores.
Sería interesante que insertes la fórmula con tu macro así como te he puesto (aunque tardará un poco por tener que insertar y calcular a la vez) porque podrás controlar mejor los valores de error #!N/A, #DIV/0!, #¿NOMBRE? , #VALOR!, etc. con la función ESNOD o ESERROR.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas