Excel VBAで integer value "45"を string value "45"に変換する方法を教えてください。
CStr(45)
はあなたが必要とするすべてです(Convert String関数)
CStr()関数を試してください
Dim myVal as String;
Dim myNum as Integer;
myVal = "My number is:"
myVal = myVal & CStr(myNum);
ほとんどの場合、「変換」する必要はありません。 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"
私の場合、関数CStringは見つかりませんでした。しかし、値に空の文字列を追加することもできます。
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
引き込んでいる文字列がE01のような16進数の場合は、CStr関数を使用していても、またString型の変数に最初に格納していても、Excelは0として変換します。問題を回避する1つの方法は、値の先頭に「を追加することです。
たとえば、Wordの表から値を取り出してExcelに取り込む場合は、次のようになります。
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
変数を宣言しない最短の方法は Type Hints を使うことです。
s$ = 123 ' s = "123"
i% = "123" ' i = 123
これはOption Explicit
でコンパイルされません。型はVariant
ではなくString
とInteger
になります
あなたが有効な整数値を持っていて、あなたの要求が値を比較することであるならば、あなたは単に下に見られるように比較を進めることができます。
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
もう1つの方法は、数値の解析済みの2つのセクションをつなぎ合わせることです。
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
CStr()
は私の経験上の変種から来た10進数を変換するようには見えないので、私はこれでCStr()
より良い成功を収めました。