web-gelistirme-sc.com

Bir Tamsayı Excel VBA'da Bir Dizeye Nasıl Dönüştürürüm?

Excel VBA'da integer value "45" i string value "45" e nasıl dönüştürebilirim?

137
What'sUP

cstr(45) ihtiyacınız olan tek şey (string dönüştürmek)

214
Yosem

CStr () işlevini deneyin

Dim myVal as String;
Dim myNum as Integer;

myVal = "My number is:"
myVal = myVal & CStr(myNum);
94
Brian

Çoğu zaman, "dönüştürmek" gerekmez; VBA, sizin için güvenli tipte bir dönüşüm gerçekleştirecektir, olmadan, CStr gibi dönüştürücülerin kullanılması.

Aşağıdaki kod herhangi bir sorun olmadan çalışır, çünkü değişken Type String'dir ve örtülü tür dönüştürme işlemi sizin için otomatik olarak yapılır!

Dim myVal As String
Dim myNum As Integer

myVal = "My number is: "
myVal = myVal & myNum

Sonuç:

"Numaram: 0"

Bu fantaziyi almak zorunda bile değilsin, bu da işe yarıyor:

Dim myString as String
myString = 77

"77"

Dönüştürmeniz gereken tek zaman, Type değişkeninin belirsiz olduğu zamandır (örneğin, Type Variant veya bir Hücrenin Value (ki is Variant)).

O zaman bile, başka bir String değişkeni veya sabiti ile birleşiyorsanız CStr işlevini kullanmanız gerekmez. Bunun gibi:

Sheet1.Range("A1").Value = "My favorite number is " & 7

"Favori numaram 7"

Öyleyse, gerçekten, sadece nadir durumu, bir tamsayı değerini, bir değişkene veya Hücre değerine gerçekten kaydetmek istediğinizde, değil, başka bir dize ile birleştiğinde (bu oldukça nadir yan durum, ben ekleyebilirsiniz):

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"

42
LimaNightHawk

Benim durumumda, CString işlevi bulunamadı.

Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
7

Çektiğiniz dize E01 gibi onaltılık bir sayı ise, CStr işlevini kullanıyor olsanız ve bir String değişken türünde ilk kez yerleştirseniz bile Excel bunu 0 olarak çevirir. Konunun etrafındaki yollardan biri, değerin başlangıcına eklemektir. 

Örneğin, değerleri bir Word tablosundan çıkarırken ve bunları Excel'e getirirken:

strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
2
dolphus333

Değişkeni bildirmeden en kısa yol Type Hints'dir:

s$ =  123   ' s = "123"
i% = "123"  ' i =  123

Bu Option Explicit ile derlenmeyecektir. Türler Variant değil, String ve Integer olacaktır

1
Slai

Geçerli bir tamsayı değerine sahipseniz ve gereksiniminiz değerleri karşılaştırmaksa, aşağıda görüldüğü gibi karşılaştırmaya devam edebilirsiniz.

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
0
user2648008

Bunu yapmanın başka bir yolu da sayısal değerin iki ayrıştırılmış bölümünü bir araya getirmektir:

Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))

Bununla birlikte CStr()'dan daha iyi bir başarı buldum, çünkü CStr(), deneyimlerimdeki değişkenlerden gelen ondalık sayıları dönüştürmüyor gibi görünüyor.

0
Jonathan