Como faço para converter o valor inteiro "45" no valor da string "45" no Excel VBA?
vba
string
type-conversion
integer
E aí
fonte
fonte
CStr(45)
, para ser mais preciso.CStr(CDbl(***))
7
é o caso007
. Você também pode especificar o número de casas decimais ou incluir milhares de separadores. Se esses detalhes são importantes para você: excelfunctions.net/vba-format-function.htmlExperimente a função CStr ()
fonte
Na maioria das vezes, você não precisará "converter"; O VBA fará uma conversão de tipo implícita segura para você, sem o uso de conversores como
CStr
.O código abaixo funciona sem problemas, porque a variável é do tipo String e a conversão implícita de tipos é feita automaticamente para você!
Resultado:
Você não precisa nem gostar disso, isso também funciona:
A única vez que você precisará converter é quando a variável Type for ambígua (por exemplo, Type Variant ou uma célula
Value
(que é Variant)).Mesmo assim, você não precisará usar a
CStr
função se estiver compondo com outra variável ou constante String. Como isso:Então, realmente, o único caso raro é quando você realmente deseja armazenar um valor inteiro, em uma variante ou valor de célula, quando não está compondo outra string (que é um caso secundário bastante raro, devo acrescentar):
fonte
Option Base 1
implícitas baseadas em 1 com , digitação implícita comDef[Type]
(garoto que é MAL!), Implícito ... você entende - a única coisa boa e implícita no VBA é a sintaxe implícita de chamada que tornou o explícitoCall
obsoleto.No meu caso, a função CString não foi encontrada. Mas adicionar uma string vazia ao valor também funciona.
fonte
CString
, que é uma função do VB.NET. Concatenar um literal de string vazio para criar um string é um método de conversão bastante ruim. UseCStr
para conversões de tipo explícitas - essa é uma conversão implícita de tipos e levanta as sobrancelhas de quem lê esse código. Desculpe, encontrei esta resposta tão tarde depois que ela foi postada. Eu gostaria de ter diminuído a votação muito antes.Se a string que você está inserindo for um número hexadecimal, como E01, o Excel a converterá como 0, mesmo se você usar a função CStr e mesmo se você a depositar primeiro em um tipo de variável String. Uma maneira de contornar o problema é anexar 'ao início do valor.
Por exemplo, ao extrair valores de uma tabela do Word e trazê-los para o Excel:
fonte
O caminho mais curto sem declarar a variável é com Dicas de tipo :
Isso não será compilado com
Option Explicit
. Os tipos não serão,Variant
masString
eInteger
fonte
Outra maneira de fazer isso é unir duas seções analisadas do valor numérico:
Encontrei melhor sucesso com isso do que
CStr()
porqueCStr()
não parece converter números decimais provenientes de variantes na minha experiência.fonte
Se você possui um valor inteiro válido e seu requisito é comparar valores, basta seguir em frente com a comparação, como mostrado abaixo.
fonte
A resposta aceita é boa para números menores, principalmente quando você está obtendo dados de planilhas do Excel. como os números maiores serão automaticamente convertidos em números científicos, isto é, e + 10.
Então, acho que isso lhe dará uma resposta mais geral. Não verifiquei se há alguma queda ou não.
isso funcionará para números convertidos e +! como o justo
CStr(7.7685099559e+11)
será mostrado como "7.7685099559e + 11" não é o esperado: "776850995590" Portanto, prefiro dizer que minha resposta será um resultado mais genérico.Atenciosamente, M
fonte
Reffer: MrExcel.com - Converta números em texto com VBA
fonte