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