4/22/2008

Variáveis tipificadas dinamicamente em VBA

"Tipificar ou Não tipificar? Eis a questão!" -- Ok! Eu sei que essa paródia não tem graça, mas eu não resisti.


Apesar da piada, a dúvida é honesta. Das linguagens que eu conheço as duas que permitem são Visual Basic, Python e linguagens de script, e das as que não permitem, C# e Java. Depois de uma análise criteriosa, levando em consideração os paradigmas envolvidos chequei a conclusão que ... tanto faz (olha a piada boba ai de novo).

Na prática, não acho que esse seja um debate muito relevante (apesar de comum), porque no final, com variavel tipificada ou não, o programador sempre vai esquecer daquela vírgula, daquele ponto e algum lugar do código. Acho que o importante é conhecer e praticar sempre a sua linguagem preferida ou a que garante o leitinho das crianças. E por falar em leitinho das crianças, vou mostrar dar um exemplo em VBA.

Mãos a obra


Primeiro exemploSub StringNaoTipada_Soma_Integer()
Dim nt
Dim i As Integer
nt = "2"
i = 3
Debug.Print nt + i
End Sub


Neste primeiro exemplo a variável nt não teve o tipo de dados declarado (Variant/Empty), ao receber o número 2 entre aspas, o interpretador assume que a variável é uma Variant/String, quer ver? Na IDE do VBA, abra a janela "Variáveis locais" que está no menu Exibir e execute o código novamente, mas use o F8 para executar passo-à-passo, e observe a coluna "Tipo" dessa janela.

Segundo exemploSub IntegerNaoTipada_Soma_String()
Dim nt
Dim s As String
nt = 2
s = 3
Debug.Print nt + s
End Sub


Mais um exemplo mas com os tipos trocados dessa vez, o resultado é o mesmo.

Terceiro exemploSub StringNaoTipada_Soma_String()
Dim nt
Dim s As String
nt = "2"
s = 3
Debug.Print nt + s
End Sub



Enfim, é isso ai, pe-pes-soal.