Pergunta

Esta declaração faz com que um estouro no VBA:

Const OVERFLOWS As Long = 10 * 60 * 60

Considerando que a definição do valor é diretamente bem:

Const COMPILES_OK As Long = 36000

Como convencer VBA para tratar inteiros literais como longs?

Graças

Foi útil?

Solução

Adicione o long sufixo & a pelo menos um número de telefone:

Const OVERFLOWS As Long = 10& * 60 * 60

Note que o uso da função CLNG para converter os valores para long não vai funcionar, porque o VBA não permite atribuir o valor de retorno de uma função a uma constante.

Outras dicas

http://support.microsoft.com/kb/191713 é um resumo agradável da declaração de tipo de caracteres disponíveis em VBA / VB4-6.

Para aqueles que acham o símbolo & um esotérico pouco, uma alternativa é usar a função CLNG que converte um número em longo

Const OVERFLOWS As Long = CLNG(10) * 60 * 60

Você poderia, então, fazer uma coisa semelhante para uma única constante

Const OVERFLOWS As Single = CSNG(10) * 60 * 60

O personagem tipo pode também ser anexado ao literais: Const transborda As Long = (10 & * 60 * 60) (Um é suffucient realmente por causa da forma como o motor VBA avalia a expressão).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top