VBA Long Data Type (Dim Variable)

Tipo de Variável Longa

O VBA Grande tipo de dados é 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 Dimension):

1 Dim lngA as Long

Então, para atribuir um valor a uma variável, basta usar o sinal de igual:

1 lngA = 30000

Colocar isso em um procedimento é parecido com este:

12345678 Sub lngExample ()'declara a variável longaDim lngA as Long'preencher a variável longalngA = 30000'mostra a caixa de mensagemMsgBox lngAEnd Sub

Se você executar o código acima, a seguinte caixa de mensagem será exibida.

Tipo de dados LongLong

O tipo de dados LongLong está disponível apenas na versão de 64 bits do Microsoft Office. Se você estiver executando uma versão de 32 bits do Office em uma máquina de 64 bits, este tipo de dados não estará disponível. Ele suporta números na faixa de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.

1 Dim lngA como LongLong

Tipo de dados LongPtr

O LongPtr foi introduzido no VBA para oferecer suporte à versão de 64 bits do Microsoft Office. Em um sistema de 32 bits, é tratado como Longo e em sistemas de 64 bits é tratado como LongLong.

1 Dim lngA as LongPtr

Nota: LongPtr não está disponível no Excel 2007 ou anterior.

Valores decimais e tipos de dados longos

Variáveis ​​longas não podem armazenar valores decimais. Se você passar um número decimal longo, o número decimal será arredondado para remover o decimal.

Portanto, se você fosse executar o procedimento abaixo:

12345678 Sub LngExampleB ()'declara a variável longaDim lngA as Long'preencher a variável longalngA = 3524,12'mostra a caixa de mensagemMsgBox lngAEnd Sub

O valor decimal seria arredondado para baixo, retornando a seguinte mensagem:

No entanto, este código abaixo:

12345678 Sub LngExampleB ()'declara a variável longaDim lngA as Long'preencher a variável longalngA = 3524,12'mostra a caixa de mensagemMsgBox lngAEnd Sub

Retornaria a seguinte caixa de mensagem (arredondando para cima):

Tipo de dados decimal / duplo

Se você quiser armazenar uma casa decimal, precisará declarar uma variável que permita casas decimais. Existem 3 tipos de dados que você pode usar - Simples, Duplo ou Moeda.

1 Dim sngPrice as Single
1 Dim dblPrice as Double
1 Dim curPrice as Currency

O tipo de dados Único arredondará a vírgula decimal de maneira ligeiramente diferente para os tipos de dados double e moeda, portanto, é preferível usar double para single para maior precisão. Um Double pode ter até 12 casas decimais enquanto Moeda e Single podem ter até 4 casas decimais.

Declarar variável longa no módulo ou nível global

Nos exemplos anteriores, declaramos a variável Long dentro de um procedimento. Variáveis ​​declaradas com um procedimento só podem ser usadas dentro desse procedimento.

Em vez disso, você pode declarar variáveis ​​Long no módulo ou nível global.

Nível de Módulo

Nível de módulo variáveis ​​são declaradas no topo dos módulos de código com o Dim demonstração.

Essas variáveis ​​podem ser usadas com qualquer procedimento nesse módulo de código.

Nível global

Nível global variáveis ​​também são declaradas no topo dos módulos de código. No entanto, em vez de usar o Dim declaração, use o Público declaração para indicar que a variável longa está disponível para ser usada em todo o seu projeto VBA.

1 Public lngA as Long

Se você declarar a variável longa em um nível de módulo e, em seguida, tentar usá-la em um módulo diferente, ocorrerá um erro.

No entanto, se você tivesse usado a palavra-chave Public para declarar a variável longa, o erro não ocorreria e o procedimento seria executado perfeitamente.

Formato longo armazenado como string

Pode haver um momento em que você deseja formatar um tipo de dados longo para uma string - por exemplo, uma data ou você pode desejar exibir um símbolo de moeda.

Para fazer isso, você usa a função Formatar.

O seguinte procedimento:

1234567891011 Sub TestLongToString ()'declara a variável stringDim strDate as string'declara o longo e preenche o valorDim lngDate enquantolngDate = 44055'converte o longo em uma string formatada como uma datastrDate = Format (lngDate, "dd mmmm aaaa")'ver o resultadoDebug.Print strDateEnd Sub

retornaria o resultado abaixo:

e o seguinte procedimento

1234567891011 Sub TestLongtoCurrencyString ()'declara a variável stringDim strMoney As String'declara o longo e preenche o valorDim lngValue As LonglngValue = 44055'converte o longo em uma string com um símbolo monetáriostrMoney = Formato (lngValue, "$ #, ## 0")'ver o resultadoMsgBox strMoneyEnd Sub

retornaria este resultado:

wave wave wave wave wave