답변:
CStr(45)
필요한 전부입니다 (문자열 변환 기능)
CStr(CDbl(***))
7
것이 007
좋습니다. 소수 자릿수를 지정하거나 천 단위 구분 기호를 포함 할 수도 있습니다. 이러한 세부 사항이 중요한 경우 : excelfunctions.net/vba-format-function.html
대부분의 경우 "변환"할 필요가 없습니다. VBA는와 같은 변환기를 사용 하지 않고 안전한 암시 적 유형 변환을 수행합니다 CStr
.
아래 코드는 변수가 Type String이고 암시 적 유형 변환이 자동으로 수행 되므로 문제없이 작동합니다 !
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
결과:
"내 번호는 : 0"
당신은 그 공상을 얻을 필요가 없습니다, 이것도 작동합니다 :
Dim myString as String
myString = 77
"77"
변수 유형이 모호 할 때 변환해야합니다 유일한 시간이다 (예를 들어, 유형 변형, 또는 셀의 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입니다!) 당신은 그것을 얻습니다-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
허용되는 답은 적은 숫자에 적합하며, 가장 중요한 것은 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)
정확해야합니다.