回答:
CStr(45)
必要なのはこれだけです(文字列変換関数)
CStr(CDbl(***))
7
なりを007
。また、小数点以下の桁数を指定したり、桁区切り記号を含めたりすることもできます。これらの詳細があなたにとって重要である場合:excelfunctions.net/vba-format-function.html
ほとんどの場合、「変換」する必要はありません。VBAは、のようなコンバーターを使用せずに、 安全な暗黙の型変換を行いますCStr
。
変数は文字列型であり、暗黙的な型変換が自動的に行われるため、以下のコードは問題なく機能します。
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
結果:
「私の番号は:0」
あなたはその空想を取得する必要さえありません、これもうまくいきます:
Dim myString as String
myString = 77
「77」
変数の型があいまいなときに変換する必要があります唯一の時間がある(例えば、Variant型、またはセルのValue
(あるバリアント))。
それでも、CStr
別のString変数または定数と複合する場合は、関数を使用する必要はありません。このような:
Sheet1.Range("A1").Value = "My favorite number is " & 7
「私のお気に入りの番号は7です」
したがって、実際には、唯一のまれなケースは、整数値をバリアントまたはセル値に格納したい場合であり、別の文字列と複合しない場合です(これはかなりまれなサイドケースですが、追加する場合があります)。
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"
Option Base 1
、を使用した暗黙の型指定Def[Type]
(EVILの少年!)、暗黙を使用しない場合、SOのVBAに関する質問は半分にはなりません...あなたはそれを手に入れます-VBAで唯一良い暗黙のことは、明示的にCall
廃止された暗黙の呼び出し構文です。
私の場合、関数CStringが見つかりませんでした。ただし、値に空の文字列を追加することもできます。
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
CString
VB.NET関数であるについては誰も話しませんでした。空の文字列リテラルを連結して文字列を作成することは、かなり不完全な変換方法です。CStr
明示的な型変換に使用-これは暗黙的な型変換であり、そのコードを読んでいる人の眉をひそめます。申し訳ありませんが、この回答が投稿されてから遅くなってしまったので、もっと早く反対投票できたらよかったのにと思います。
変数を宣言しない最短の方法は、タイプヒントを使用することです。
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
受け入れられた回答は、数が少ない場合に最適です。最も重要なのは、Excelシートからデータを取得する場合です。大きい数値は自動的に科学的数値、つまりe + 10に変換されるためです。
だから、これはあなたにもっと一般的な答えを与えると思います。没落の有無は確認していません。
CStr(CDbl(#yourNumber#))
これはe +に変換された数値で機能します!正義としてCStr(7.7685099559e+11)
期待どおりではなく「7.7685099559e + 11」として表示されるため:「776850995590」したがって、私の答えはより一般的な結果になると言いたいのです。
よろしく、M
Sub NumToText(ByRef sRng As String, Optional ByVal WS As Worksheet)
'---Converting visible range form Numbers to Text
Dim Temp As Double
Dim vRng As Range
Dim Cel As Object
If WS Is Nothing Then Set WS = ActiveSheet
Set vRng = WS.Range(sRng).SpecialCells(xlCellTypeVisible)
For Each Cel In vRng
If Not IsEmpty(Cel.Value) And IsNumeric(Cel.Value) Then
Temp = Cel.Value
Cel.ClearContents
Cel.NumberFormat = "@"
Cel.Value = CStr(Temp)
End If
Next Cel
End Sub
Sub Macro1()
Call NumToText("A2:A100", ActiveSheet)
End Sub
CStr(45)
、正確には。