jueves, 10 de febrero de 2022

Usando celdas con nombre en VBA para Microsoft Excel

A diferencia de las formulas de Microsoft Excel en las cuales si insertamos una columna las referencias de las celdas se actualizan automáticamente, en Visual Basic no sucede eso.

Si en visual Basic, una vez que ya tenemos el código programado, introducimos en el Excel una columna, el programa no se entera del cambio de dirección de la celda y sigue usando la referencia original, provocando de esta manera que se acceda a celdas incorrectas.

Una posible solución a esto, es usar celdas con nombre ya que al cambiar la ubicación de la celda el nombre acompañada a la celda.

Para ello usaremos el método Range con el nombre de la celda en lugar de la referencia.





Este es el código que usamos en el ejemplo de hoy:



Option Explicit

Sub condicional()
    
    'Declaramos una variable numerica
    Dim dia As Integer
    Dim dato As String
    
    dato = Range("celdaAmarilla").Value

    If (Not IsNumeric(dato)) Then
        MsgBox ("Error, has introducido un valor no numérico")
    Else
        dia = CInt(dato)
    
        If (dia = 1) Then MsgBox ("lunes")
    
        If (dia = 2) Then MsgBox ("martes")
    
        If (dia = 3) Then MsgBox ("miercoles")
    
        If (dia = 4) Then MsgBox ("jueves")
    
        If (dia = 5) Then MsgBox ("viernes")
    
        If (dia = 6) Then MsgBox ("sabado")
    
        If (dia = 7) Then MsgBox ("domingo")
        
        If (dia < 1) Then MsgBox ("Error, has introducido un error demasiado pequeño")
        
        If (dia > 7) Then MsgBox ("Error, has introducido un error demasiado grande")
        
    End If
    
End Sub



En concreto la instrucción que nos va a permitir no depender de la ubicación de la celda es la que se muestra a continuación resaltada.

dato = Range("celdaAmarilla").Value




Una vez asignado el nombre a una celda o rango, este va a acompañar a la celda aunque se inserten o eliminen filas o columnas.

Originalmente la columna con el número del día estaba en la celda "B2".

En esta posición le asignamos el nombre "celdaAmarilla".


Posteriormente, insertamos una columna, pasando a estar la celda en la ubicación "C2".



Pero como vemos, la celda sigue manteniendo el nombre asignado.



No hay comentarios:

Publicar un comentario