Instrucción TypeType statement

Se usa en el nivel de módulo para definir un tipo de datos definido por el usuario que contenga uno o varios elementos.Used at the module level to define a user-defined data type containing one or more elements.

SintaxisSyntax

[ Privada | pública ] Tipo varname ElementName [([ __ subscripts])] Como es tipo[ Private | Public ] Type varname elementname [ ( [ subscripts ] ) ] As type
[ ElementName [([ __ subscripts])] as tipo ] . . .[ elementname [ ( [ subscripts ] ) ] As type ] . . .
**Tipo de extremo** **End Type**


La sintaxis de la instrucción Type consta de las partes siguientes:The Type statement syntax has these parts:

PartPart DescripciónDescription
PublicPublic Opcional.Optional. Se usa para declarar tipos definidos por el usuario que están disponibles para todos los procedimientos en todos los módulos de todos los proyectos.Used to declare user-defined types that are available to all procedures in all modules in all projects.
PrivatePrivate Opcional.Optional. Se usa para declarar tipos definidos por el usuario que solamente están disponibles dentro del módulo donde se hace la declaración.Used to declare user-defined types that are available only within the module where the declaration is made.
varnamevarname Obligatorio.Required. Nombre del tipo definido por el usuario; sigue las convenciones de nomenclatura de variables estándar.Name of the user-defined type; follows standard variable naming conventions.
ElementNameelementname Necesario.Required. Nombre de un elemento del tipo definido por el usuario.Name of an element of the user-defined type. Los nombres de elementos también siguen las convenciones de nomenclatura de variable estándar, a excepción de que se pueden usar palabras clave.Element names also follow standard variable naming conventions, except that keywords can be used.
subscriptssubscripts Cuando no se encuentra de manera explícita en lower, el límite inferior de una matriz se controla mediante la instrucción Option Base.When not explicitly stated in lower, the lower bound of an array is controlled by the Option Base statement. El límite inferior es cero si no existe una instrucción Option Base.The lower bound is zero if no Option Base statement is present.
typetype Necesario.Required. Tipo de datos del elemento; puede ser byte, Boolean, Integer, Long, Currency, Single, Double, decimal (no compatible actualmente), Date, String (para cadenas de longitud variable), **String ** longitud (para cadenas de longitud fija), Object, Variant, otro tipo definido por el usuario o un tipo de objeto.Data type of the element; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (for variable-length strings), String length (for fixed-length strings), Object, Variant, another user-defined type, or an object type.

ObservacionesRemarks

La instrucción Type sólo puede usarse en el nivel de módulo.The Type statement can be used only at the module level. Después de declarar un tipo definido por el usuario mediante la instrucción Type , puede declarar una variable de ese tipo en cualquier lugar dentro del ámbito de la declaración.After you have declared a user-defined type by using the Type statement, you can declare a variable of that type anywhere within the scope of the declaration. Use Dim, Private, Public, ReDim o Static para declarar una variable de un tipo definido por el usuario.Use Dim, Private, Public, ReDim, or Static to declare a variable of a user-defined type.

En módulos estándar y módulos de clase, los tipos definidos por el usuario son públicos de manera predeterminada.In standard modules and class modules, user-defined types are public by default. Esta visibilidad puede cambiarse mediante la palabra **** clave Private.This visibility can be changed by using the Private keyword.

Los números de línea y las etiquetas de línea no están permitidos en bloques Type...End Type.Line numbers and line labels aren't allowed in Type...End Type blocks.

Los tipos definidos por el usuario se usan a menudo con registros de datos, que frecuentemente constan de un número de elementos relacionados de tipos de datos distintos.User-defined types are often used with data records, which frequently consist of a number of related elements of different data types.

En el ejemplo siguiente se muestra el uso de matrices de tamaño fijo en un tipo definido por el usuario:The following example shows the use of fixed-size arrays in a user-defined type:

Type StateData 
    CityCode (1 To 100) As Integer    ' Declare a static array. 
    County As String * 30 
End Type 
 
Dim Washington(1 To 100) As StateData 

En el ejemplo anterior, StateData incluye la CityCode matriz estática y el registro Washington tiene la misma estructura que. StateDataIn the preceding example, StateData includes the CityCode static array, and the record Washington has the same structure as StateData.

Si declara una matriz de tamaño fino dentro de un tipo definido por el usuario, sus dimensiones se deben declarar con literales numéricos o constantes en vez de variables.When you declare a fixed-size array within a user-defined type, its dimensions must be declared with numeric literals or constants rather than variables.

EjemploExample

En este ejemplo se usa la instrucción Type para definir un tipo de datos definido por el usuario.This example uses the Type statement to define a user-defined data type. La instrucción Type se usa únicamente en el nivel de módulo.The Type statement is used at the module level only. Si aparece en un módulo de clase, una instrucción Type debe ir precedida por la palabra clave Private.If it appears in a class module, a Type statement must be preceded by the keyword Private.

Type EmployeeRecord    ' Create user-defined type. 
    ID As Integer    ' Define elements of data type. 
    Name As String * 20 
    Address As String * 30 
    Phone As Long 
    HireDate As Date 
End Type 
Sub CreateRecord() 
    Dim MyRecord As EmployeeRecord    ' Declare variable. 
 
    ' Assignment to EmployeeRecord variable must occur in a procedure. 
    MyRecord.ID = 12003    ' Assign a value to an element. 
End Sub

Vea tambiénSee also

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.