Office 2003 vs XP: Variant data type

15/11/2007 - 16:10 por EA | Informe spam
Hola:
¿Saben si el tipo de datos Variant ha sufrido alteraciones en Office 2003
con respecto a XP? Tengo resultados inesperados en el tratamiento de celdas
en las que hay texto con apariencia de fechas. En 2003, si esa fecha es hasta
12/12/2007, la Variant devuelve una fecha de verdad (ya no texto) con
formato mm/dd/yy (mis regionals settings son dd/mm/yy), a partir de
13/10/2007 la Variant devuelve el texto. En XP por el contrario la variant
devuelve siempre fechas con formato el de mi regional settings.
 

Leer las respuestas

#1 Héctor Miguel
16/11/2007 - 05:00 | Informe spam
hola, (...) ?

Saben si el tipo de datos Variant ha sufrido alteraciones en Office 2003 con respecto a XP?
Tengo resultados inesperados en el tratamiento de celdas en las que hay texto con apariencia de fechas.
En 2003, si esa fecha es hasta 12/12/2007, la Variant devuelve una fecha de verdad (ya no texto)
con formato mm/dd/yy (mis regionals settings son dd/mm/yy)
a partir de 13/10/2007 la Variant devuelve el texto.
En XP por el contrario la variant devuelve siempre fechas con formato el de mi regional settings.



1) (hasta donde se) VBA es "US-Centrc" y los datos de fechas solo los reconoce en el formato mm/dd/yy
(independientemente de lo que establezcas en la configuracion regional del panel de control de windows)

2) intercambiando en "mi" configuracion regional el formato de fechas entre dd/mm/aa <-> mm/dd/aa
y precediendo por un apostrofo entradas "como fecha" en [A1] '12/12/2007 y en [A2] '13/12/2007
el siguiente codigo devuelve que A2 contiene un "dato fecha" (y lo representa segun configuracion regional)
no importa la version de excel donde lo ejecute y (te confirmo) tampoco lo establecido en la configuracion regional

Sub Probando_datos_variant()
Dim Dato1 As Variant, Dato2 As Variant
Dato1 = [a1]
Dato2 = [a2]
MsgBox "Contenidos:" & vbTab & "Son fecha ?" & vbTab & _
"(conf reg)" & vbTab & "Fecha larga (conf reg)" & vbCr & _
Dato1 & vbTab & IsDate(Dato1) & vbTab & _
Format(Dato1, "short date") & vbTab & vbTab & Format(Dato1, "long date") & vbCr & _
Dato2 & vbTab & IsDate(Dato2) & vbTab & _
Format(Dato2, "short date") & vbTab & vbTab & Format(Dato2, "long date")
End Sub

3) como los imponderables al trabajar con fechas en VBA son mas de dos... (te sugiero)
es conveniente visitar la siguiente exposicion de manejos de fechas (de Stephen Bullen):
-> http://www.bmsltd.ie/ExcelProgRef/Ch22/default.htm

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Preguntas similares