COMO DESCOBRIR TIPO DE VARIAVEL
Galera, tem como descobrir qual o tipo de uma variável em tempo de execução ???
é tipo assim:
é que estou criando uma Classe onde nela tem um Array que vai alocar os Ãtens passados...e estes Ãtens podem ser Strings, Integers, Doubles...
Tentei deixar como Variant, mas dá erro: [Ô]tipo desconhecido[Ô]
Então estou pensando em antes de alocar, verificar primeiro que tipo são os dados para assim [Ô]setar[Ô] o Array...
é tipo assim:
Dim x
x = [Ô]Petronco[Ô] [ô] String
x = 2 [ô] Integer
x = 2.5 [ô] Double
x() = Split([Ô]Petronco,VBMania,Os Feras[Ô],[Ô],[Ô]) [ô] Variant (Array)
é que estou criando uma Classe onde nela tem um Array que vai alocar os Ãtens passados...e estes Ãtens podem ser Strings, Integers, Doubles...
Tentei deixar como Variant, mas dá erro: [Ô]tipo desconhecido[Ô]
Então estou pensando em antes de alocar, verificar primeiro que tipo são os dados para assim [Ô]setar[Ô] o Array...
Use a função TypeName:
MsgBox TypeName(x)
MsgBox TypeName(x)
O problema está em fazer isto em tempo de execução, no caso que vc apresentou acima, o split só aceita string, não adianta colocar como variant, que irá gerar um erro.
minha dica é, ou trate tudo como string, ou crie uma função para determinar o tipo direto no na array:
ex:
verfique se a string possui letras se sim mantenha como string
se não possuir letras e possuir apenas numeros inteiros converta para interger
se possuir apenas numeros com virgula ou ponto converta para double.
codigo exemplo:
pode mudar a ordem dos valores e verá que retornará a variavel correta
minha dica é, ou trate tudo como string, ou crie uma função para determinar o tipo direto no na array:
ex:
verfique se a string possui letras se sim mantenha como string
se não possuir letras e possuir apenas numeros inteiros converta para interger
se possuir apenas numeros com virgula ou ponto converta para double.
codigo exemplo:
Private Sub Command1_Click()
Dim x() As String
x = Split([Ô]petronco,2.5,2[Ô], [Ô],[Ô])
For f = 0 To UBound(x)
If IsNumeric(x(f)) <> True Then
MsgBox TypeName(CStr(x(f)))
ElseIf IsNumeric(x(f)) = True And InStr(1, x(f), [Ô].[Ô]) = 0 Then
MsgBox TypeName(CInt(x(f)))
ElseIf IsNumeric(x(f)) = True And InStr(1, x(f), [Ô].[Ô]) <> 0 Then
MsgBox TypeName(CDbl(x(f)))
End If
Next f
End Sub
pode mudar a ordem dos valores e verá que retornará a variavel correta
KERPLUNK: é isso mesmo...a função VarType é similiar a esta que você indicou...Valeu !
MARCELO-TREZE: Minha idéia é essa mesma !
de acordo com o que for passado para o Array, setar o tipo dele para evitar erros de execurção.
MARCELO-TREZE: Minha idéia é essa mesma !
de acordo com o que for passado para o Array, setar o tipo dele para evitar erros de execurção.
bom colega afinal o exemplo passado resolve seu problema?
Tópico encerrado , respostas não são mais permitidas