Tipos personalizados

From Apache OpenOffice Wiki
Jump to: navigation, search

Este tipo de variables nos permite crear una estructura de datos llamada registro con variables de diferentes tipos. Para creara usamos las palabras clave Type y End Type:

Option Explicit

'Nombre del registro
Type Contacto
    'Contenido del registro
    Nombre As String
    Edad As Integer
    Ingreso As Date
End Type

Sub TiposPersonalizados1()
Dim oContacto As Object

    'Creamos un objeto del tipo Contacto
    oContacto = CreateObject( "Contacto" )
    'Llenamos sus datos
    With oContacto
        .Nombre = "Lizette Avila"
        .Edad = 35
        .Ingreso = DateSerial(2005,1,15)
    End With
    'Mostramos sus datos
    MsgBox oContacto.Nombre & " - " & oContacto.Edad & " años - ingreso el " & oContacto.Ingreso

End Sub


Los tipos personalizados no pueden ser declararlos dentro de macros; es obligatorio hacerlo en la sección de declaraciones de un modulo. Otra forma de usarlos es la siguiente.


Type Producto
    Cantidad As Single
    Descripcion As String
    Precio As Single
    Importe As Double
End Type

Sub TiposPersonalizados2()
Dim oProducto As New Producto

    With oProducto
        .Cantidad = 2.5
        .Descripcion = "Horas de servicio"
        .Precio = 200
        .Importe = .Cantidad * .Precio
    End With

    MsgBox oProducto.Cantidad & Chr(10) & _
            oProducto.Descripcion & Chr(10) & _
            oProducto.Precio & Chr(10) & _
            oProducto.Importe
End Sub


Se pueden declarar matrices de tipos personalizados:


Type Direccion
    Calle As String
    Numero As Integer
    Colonia As String
End Type

Sub TiposPersonalizados3()
Dim oDireccion() As New Direccion
Dim sCalle As String
Dim iNumero As Integer
Dim sColonia As String
Dim bSalir As Boolean
Dim co1 As Integer

    Do
        'Solicitamos los datos
        sCalle = InputBox( "Calle" )
        iNumero = Val(InputBox( "Número" ))
        sColonia = InputBox( "Colonia" )
        'Si falta cualquier dato salimos
        If sCalle = "" Or iNumero = 0 Or sColonia = "" Then
            bSalir = True            
        Else
            'Redimencionamos la matriz
            Redim Preserve oDireccion( co1 )
            'Vaciamos los datos
            With oDireccion(co1)
                .Calle = sCalle
                .Numero = iNumero
                .Colonia = sColonia
            End With
            co1 = co1 + 1
        End If
    Loop Until bSalir

    'Mostramos los datos capturados
    For co1 = LBound( oDireccion ) To UBound( oDireccion )
        MsgBox oDireccion(co1).Calle & Chr(10) & _
            oDireccion(co1).Numero & Chr(10) & _
            oDireccion(co1).Colonia
    Next

End Sub



ES.Plantillas.Logo foro es.png
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO,
o quieres ampliar la información, no dudes en dirigirte al

Foro Oficial en español de Apache OpenOffice para Macros y API UNO


Personal tools