Módulos de clases

Excel cuenta con muchos objetos disponibles, aunque puede llegar el momento en que sea más práctico para el usuario crear su propio objeto. Estos se crean usando un módulo de clase asignándoles propiedades y métodos personalizados.

En el siguiente ejemplo que vamos a desarrollar deseamos aplicar un descuento a los clientes que sean de Londres.  Evidentemente que esto se puede hacer de forma mucho más fácil sin necesidad de ninguna línea de código, pero nos resulta útil para explicar de forma clara el concepto que estamos desarrollando.

Desde VBA seleccione Insertar>Módulo de clase. Es importante tener en cuenta:

  • Todo objeto personalizado ha de tener su propio módulo.
  • El módulo de clase es necesario renombrarlo para reflejar el objeto personalizado.

Por lo tanto vamos a renombrar nuestro módulo desde la ventana de propiedades y le llamaremos clsClientes. A continuación vamos a asignar las propiedades:

  • Public localidad as string
  • Public ratio as double
  • Public importeventa as double

Como necesitamos que estas variables sean accesibles para el módulo estándar le hemos declarado Public.

El siguiente código crea un método descuento que permite calcular el descuento aplicable:

Public Function descuento() As Double

descuento = importeventa * ratio

End Function

 

Ahora mediante un módulo estándar procederemos al cálculo de los descuentos de los datos que se han insertado en la hoja 1:

Declaramos una la variable para hacer uso de nuestro objeto personalizado y otra para hacer el recorrido por las filas:

Option Explicit

Dim cliente As clsCliente

Dim fila As Byte

 

A continuación establecemos la variable en un nuevo objeto:

Set cliente = New clsCliente

A partir de aquí recogemos los valores de las diferentes propiedades:

With cliente
    For fila = 2 To 6
    .localidad = Cells(fila, 2).Value
    .ratio = 0.1
    .importeventa = Cells(fila, 3).Value
E introducimos un bucle condicional:

If cliente.localidad = “Londres” Then

    Cells(fila, 5).Value = cliente.descuento
    Cells(fila, 4).Value = “10 %”
    Cells(fila, 6).Value = Cells(fila, 3).Value – Cells(fila, 5).Value

    End If

 

Todo el código del módulo junto con los cierres correspondientes:

Sub descuento_clientes()

Set cliente = New clsCliente

With cliente
    For fila = 2 To 6
    .localidad = Cells(fila, 2).Value
    .ratio = 0.1
    .importeventa = Cells(fila, 3).Value

      If cliente.localidad = “Londres” Then

        Cells(fila, 5).Value = cliente.descuento
        Cells(fila, 4).Value = “10 %”
        Cells(fila, 6).Value = Cells(fila, 3).Value – Cells(fila, 5).Value

    End If

   Next

End With

End Sub

One Response to Módulos de clases

  1. javi dice:

    y como sigue? como lo ejecuto?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: