Tipos personalizados
From Apache OpenOffice Wiki
< ES | Manuales | GuiaAOO | TemasAvanzados | Macros | StarBasic | ElLenguajeOOoBasic
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
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 |