Estouro ao calcular um const no VBA
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
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).