VBA – Tipo de Dados Long (Dim Variável)
In this Article
Tipo de Variável Long
O tipo de dados Long do VBA é usado para armazenar valores de dados muito longos (-2.147.483.648 a 2.147.483.648). Ele só pode armazenar números inteiros (sem casas decimais).
Para declarar uma variável Long, você usa a declaração Dim (abreviação de Dimensão):
Dim lngA as Long
Em seguida, para atribuir um valor a uma variável, basta usar o sinal de igual:
lngA = 30000
Colocar isso em um procedimento tem a seguinte aparência:
Sub lngExamplo()
'declara a variável long
Dim lngA as Long
'preencher a variável long
lngA = 30000
'mostrar a caixa de mensagem
MsgBox lngA
End Sub
Se você executar o código acima, a seguinte caixa de mensagem será exibida.
Tipo de Dados LongLong
O tipo de dados LongLong só está disponível na versão de 64 bits do Microsoft Office. Se você estiver executando uma versão de 32 bits do Office em um computador de 64 bits, esse tipo de dados não estará disponível. Ele suporta números no intervalo de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.
Dim lngA as LongLong
Tipo de dados LongPtr
O LongPtr foi introduzido no VBA para dar suporte à versão de 64 bits do Microsoft Office. Em um sistema de 32 bits, ele é tratado como um Long e, em sistemas de 64 bits, é tratado como um LongLong.
Dim lngA as LongPtr
Observação: LongPtr não está disponível no Excel 2007 ou anterior.
Valores Decimais e Tipos de Dados Long
As variáveis Long não podem armazenar valores decimais. Se você passar um número decimal para um long, o número decimal será arredondado para remover o decimal.
Portanto, se você executasse o procedimento abaixo:
Sub LngExamploB()
'declarar a variável long
Dim lngA as Long
'preencher a variável long
lngA = 3524.12
'mostrar a caixa de mensagem
MsgBox lngA
End Sub
O valor decimal seria arredondado para baixo, retornando a seguinte mensagem:
No entanto, este código abaixo:
Sub LngExamploB()
'declarar a variável long
Dim lngA as Long
'preencher a variável long
lngA = 3524.52
'mostrar a caixa de mensagem
MsgBox lngA
End Sub
Retornaria a seguinte caixa de mensagem (arredondando para cima):
Tipo de Dados Decimal / Duplo (Double)
Se quiser armazenar uma casa decimal, você precisará declarar uma variável que permita casas decimais. Há três tipos de dados que você pode usar: Single, Double ou Currency.
Dim sngPrice as Single
Dim dblPrice as Double
Dim curPrice as Currency
O tipo de dados Single arredondará o ponto decimal de forma ligeiramente diferente dos tipos de dados double e currency, portanto, é preferível usar double em vez de single para obter precisão. Um Double pode ter até 12 casas decimais, enquanto Currency e Single podem ter até 4 casas decimais.
Declarar uma Variável Long em Nível de Módulo ou Global
Nos exemplos anteriores, declaramos a variável Long em um procedimento. As variáveis declaradas com um procedimento só podem ser usadas dentro desse procedimento.
Em vez disso, você pode declarar variáveis Long no nível do módulo ou global.
Nível de Módulo
As variáveis em nível de módulo são declaradas na parte superior dos módulos de código com a instrução Dim.
Essas variáveis podem ser usadas com qualquer procedimento nesse módulo de código.
Nível Global
As variáveis de nível global também são declaradas na parte superior dos módulos de código. Entretanto, em vez de usar a instrução Dim, use a instrução Public para indicar que a variável long está disponível para ser usada em todo o seu projeto VBA.
Public lngA as Long
Se você declarasse a variável long em um nível de módulo e depois tentasse usá-la em um módulo diferente, ocorreria um erro.
Entretanto, se você tivesse usado a palavra-chave Public para declarar a variável long, o erro não ocorreria e o procedimento seria executado perfeitamente.
Formatar Long Armazenado como String
Pode haver um momento em que você deseje formatar um tipo de dados Long em uma cadeia de caracteres – por exemplo, uma data ou talvez queira exibir um símbolo de moeda.
Para isso, você usa a função Format.
O procedimento a seguir:
Sub TesteLongParaString()
'declarar a variável string
Dim strData as string
'declarar a long e preencher o valor
Dim lngData as long
lngData = 44055
'converta a long em uma string formatada como uma data
strData = Format(lngData, "dd mmmm yyyy")
'visualizar o resultado
MsgBox strData
End Sub
retornaria o resultado abaixo:
e o seguinte procedimento
Sub TestarLongParaStringMoeda()
'declarar a variável string
Dim strMoeda As String
'declarar a long e preencher o valor
Dim lngValor As Long
lngValor = 44055
'converter a long em uma string com um símbolo de moeda
strMoeda = Format(lngValor, "$#,##0")
'visualizar o resultado
MsgBox strMoeda
End Sub
retornaria este resultado: