Cum pot converti integer valoarea "45" în string valoarea "45" în Excel VBA?
De cele mai multe ori, ai castigat't nevoie pentru a "converti"; VBA va face în condiții de siguranță implicit tipul de conversie pentru tine, without utilizarea de convertoare de ca CStr
.
Codul de mai jos funcționează fără probleme, pentru că variabila a este de Tip Șir de caractere, și implicite tip de conversie se face pentru tine în mod automat!
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
Rezultatul:
"numărul Meu de telefon este: 0"
Nu't chiar trebuie să trecem de lux, acest lucru funcționează de asemenea:
Dim myString as String
myString = 77
"77"
Singurul timp VA fi nevoie pentru a converti este atunci când variabila de Tip este ambiguă (de exemplu, de Tip Variant, sau o Celulă's "Valoare" (care is Variantă)).
Chiar și atunci, ai castigat't trebuie să folosim CStr funcția daca're compunere cu un alt Șir de variabile sau constante. Astfel:
Sheet1.Range("A1").Value = "My favorite number is " & 7
"numărul Meu preferat este de 7"
Deci, într-adevăr, singurul rare caz este atunci când într-adevăr doriți pentru a stoca o valoare întreagă, într-o variantă sau valoare a Celulei, atunci când nu, de asemenea, în combinație cu un alt șir (care este o complicație destul de rară partea caz, am putea adăuga):
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = i
7
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = CStr(i)
"7"
În cazul meu, funcția CString nu a fost găsit. Dar adăugând un șir gol la valoarea funcționează, de asemenea.
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
Drumul cel mai scurt, fără a declara variabila este cu Tip Indicii :
s$ = 123 ' s = "123"
i% = "123" ' i = 123
Acest lucru nu se va compila cu Option Explicit
. Tipurile nu va fi o "Variantă" dar "String" și "Întreg"
Dacă șirul're trăgând în se întâmplă să fie un număr hexazecimal, cum ar fi E01, atunci Excel va traduce ca 0 chiar dacă utilizați CStr funcție, și chiar dacă la prima depunere într-un Șir de variabile de tip. O cale în jurul valorii de problema este de a adăuga ' la începutul valoare.
De exemplu, atunci când trăgând valori dintr-un Cuvânt de masă, și aducându-le în Excel:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Un alt mod de a face asta este să îmbini două analizat secțiuni de valoarea numerică împreună:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
Am gasit mai mult succes cu asta decât CStr ()", deoarece " CStr()
nu't par pentru a converti numere zecimale cu care a venit din variantele din experiența mea.
Dacă aveți un număr întreg valid și cerința dvs. este de a compara valorile, puteți pur și simplu merge mai departe cu comparația ca se vede mai jos.
Sub t()
Dim i As Integer
Dim s As String
' pass
i = 65
s = "65"
If i = s Then
MsgBox i
End If
' fail - Type Mismatch
i = 65
s = "A"
If i = s Then
MsgBox i
End If
End Sub