web-dev-qa-db-ja.com

Excel VBAで整数を文字列に変換する方法はありますか

Excel VBAで integer value "45"を string value "45"に変換する方法を教えてください。

145
What'sUP

CStr(45)はあなたが必要とするすべてです(Convert String関数)

222
Yosem

CStr()関数を試してください

Dim myVal as String;
Dim myNum as Integer;

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

ほとんどの場合、「変換」する必要はありません。 VBAはあなたのために安全な暗黙の型変換をします なしでCStrのようなコンバータの使用。

以下のコードは問題なく動作します。変数はString型であり、暗黙的に型変換が自動的に行われるためです。

Dim myVal As String
Dim myNum As Integer

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

結果:

「マイナンバーは:0」

あなたもその空想を取得する必要はありません、これも動作します:

Dim myString as String
myString = 77

"77"

あなたが変換する必要がある唯一の時は、変数Typeがあいまいなときです(例えば、Type Variant、あるいはCellのValue(which is Variant))。

それでも、他のString型の変数または定数と複合している場合は、CStr関数を使用する必要はありません。このような:

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

「私のお気に入りの番号は7です」

つまり、本当に唯一の まれ の場合は、実際に整数値をバリアントまたはCell値に格納したい場合です。 ではない 他の文字列と複合する場合(これはかなりまれな場合です)私は追加するかもしれません:

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"

46
LimaNightHawk

私の場合、関数CStringは見つかりませんでした。しかし、値に空の文字列を追加することもできます。

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

引き込んでいる文字列がE01のような16進数の場合は、CStr関数を使用していても、またString型の変数に最初に格納していても、Excelは0として変換します。問題を回避する1つの方法は、値の先頭に「を追加することです。

たとえば、Wordの表から値を取り出してExcelに取り込む場合は、次のようになります。

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

変数を宣言しない最短の方法は Type Hints を使うことです。

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

これはOption Explicitでコンパイルされません。型はVariantではなくStringIntegerになります

2
Slai

あなたが有効な整数値を持っていて、あなたの要求が値を比較することであるならば、あなたは単に下に見られるように比較を進めることができます。

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

もう1つの方法は、数値の解析済みの2つのセクションをつなぎ合わせることです。

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

CStr()は私の経験上の変種から来た10進数を変換するようには見えないので、私はこれでCStr()より良い成功を収めました。

0
Jonathan