¿Leer datos de cualquier celda y escribir en otra?

Hola a todos, mi problema es el siguiente:
Estoy empezando a programar en VBA de excel y tengo un pequeño problema referente a las celdas, quisiera saber si puedo leer datos de otras celdas para usar en una condición, ya que de eso depende el resultado que quiero en otra celda más, estoy seguro que no me entendieron bien XD, les dejo el código que tengo para entender mejor la situación.
Sub prueba()
Dim v1 As Integer
Dim v2 As Integer
Dim res As Integer
Dim dil1 As Integer
Dim dil2 As Integer
v1 = Range("I2").Value
v2 = Range("I3").Value
dil1 = Range("N2").Value
dil2 = Range("N3").Value
If (v1 >= 30 And v1 <= 80) Then
    If (v2 >= 30 And v2 <= 80) Then
        res = 1
    Else
        res = dil1
    End If
ElseIf (v2 >= 30 And v2 <= 80) Then
    If (v1 >= 30 And v1 <= 80) Then
        res = 1
    Else
        res = dil2
    End If
Else
res = 10
End If
Range("J2").Value = res
End Sub
Con este código trabaja bien y hace lo que tiene que hacer, el problema es que trabaja con celdas específicas, es decir, la I2, I3, N2, N3 y el res en J2, por lo que cuando quiero agregar más datos tendría entonces que codificar para las celdas I4, I5, N4, N5 y el resultado en J4.
Eso es lo que quiero evitar, tener que agregar al código cada vez que agrego datos porque estoy seguro que debe poderse de otra manera.

1 respuesta

Respuesta
Crea una función:
Public Function prueba(ByVal v1 As Integer, ByValv2 As Integer, ByVal res As Integer, _
                                 ByVal dil1 As Integer, ByVal dil2 As Integer)
If (v1 >= 30 And v1 <= 80) Then
    If (v2 >= 30 And v2 <= 80) Then
        res = 1
    Else
        res = dil1
    End If
ElseIf (v2 >= 30 And v2 <= 80) Then
    If (v1 >= 30 And v1 <= 80) Then
        res = 1
    Else
        res = dil2
    End If
Else
res = 10
End If
prueba = res
End Function
Y en cualquier celda "llama" la función como cualquier otra pasando los parámetros reuqeridos:
=prueba(Range("I2").Value, Range("I3").Value, Range("N2").Value, Range("N3").Value)
Así no necesitas cambiar la programación, solo los argumentos o parámetros que son los valores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas