Monday, January 25, 2010

Usando el objeto Range para programar funciones matriciales

A veces nos encontramos con la necesidad de programar alguna función definida por el usuario (en VBA) de forma que acepte una matriz como argumento. Sin embargo, si usamos como argumento una matriz, la función no funcionará cuando queramos usar un conjunto de celdas de Excel como argumento... La respuesta está en el objeto Range.

El objeto Range se refiere a un rango de celdas de la hoja de cálculo y puede ser pasado como argumento a una función de VBA. Por ejemplo, la función

Public Function miFuncion (miRango as Range) As Integer
    Dim numeroCeldas As Integer
    numeroCeldas=miRango.Rows.Count*miRango.Columns.Count
    miFuncion=numeroCeldas
End Function

cuenta el número de celdas que hay en un rango.

Las propiedades más importantes de este objeto son:
  • .Cells(i,j).Value: Permite acceder al valor de una celda del rango. Los valores i y j corresponden a fila y columna respectivamente siendo el primer valor, esquina superior izquierda, el (1, 1).
  • .Columns.Count: Indica el número de columnas que tiene el rango.
  • .Rows.Count: Indica el número de filas que tiene el rango.
Con estas tres propiedades se puede desarrollar cualquier función que requiera la transferencia de una matriz como argumento.

No comments:

Post a Comment