VBA 文字轉數字 | 6 個函數使用說明

文字轉數字

本文介紹 VBA 6 個實用”文字轉數字”函數。在資料型態轉換前,建議先用 IsNumeric() 函數檢查變數內容是否為數值,以避免程式發生錯誤。 VBA 資料型態轉換函數簡單好記,基本上都是大寫”C”開頭(Convert),後面為想要轉換的資料型態。比如,要轉換為 Byte 資料型態,函數為 CByte()。

文字轉數字的 6 個函數

函數說明
CByte()將文字轉成 Byte 型態
Cint()將文字轉成 Integer 型態
CLng()將文字轉成 Long 型態
CSng()將文字轉成 Single 型態
CDbl()將文字轉成 Double 型態
Val()將文字轉成 Double 型態

函數說明

CByte()

CByte() 函數能將字串資料類型,轉換為 Byte 資料類型,語法如下:

CByte(string)

範例:

Sub str_to_byte()
    Dim text1, text2 As String
    Dim str As String
    Dim numByte As Byte

    str = "15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numByte = CByte(str)
    text2 = "numByte 值: " & numByte & ",變數型態:" & typeName(numByte)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub
行數 說明
6將 “15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 CByte() 函數,將變數 str 的值轉換成 Byte 資料型態,輸入至變數 numByte
10將變數 numByte 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
文字轉 Byte

CInt()

CInt() 函數能將字串資料類型,轉換為 Integer 資料類型,語法如下:

CInt(string)

範例:

Sub str_to_int()
    Dim text1, text2 As String
    Dim str As String
    Dim numInteger As Integer

    str = "15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numInteger = CInt(str)
    text2 = "numInteger 值: " & numInteger & ",變數型態:" & typeName(numInteger)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub
行數 說明
6將 “15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 CInt() 函數,將變數 str 的值轉換成 Interger 資料型態,輸入至變數 numInteger
10將變數 numInteger 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
文字轉 Integer

CLng()

CLng() 函數能將字串資料類型,轉換為 long 資料類型,語法如下:

CLng(string)

範例:

Sub str_to_lng()
    Dim text1, text2 As String
    Dim str As String
    Dim numLong As Long

    str = "15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numLong = CLng(str)
    text2 = "numLong 值: " & numLong & ",變數型態:" & typeName(numLong)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub
行數 說明
6將 “15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 CLng() 函數,將變數 str 的值轉換成 long 資料型態,輸入至變數 numLong
10將變數 numLong 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
文字轉 Long

CSng()

CSng() 函數能將字串資料類型,轉換為 Single 資料類型,語法如下:

CSng(string)

範例:

Sub str_to_single()
    Dim text1, text2 As String
    Dim str As String
    Dim numSingle As Single

    str = "15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numSingle = CSng(str)
    text2 = "numSingle 值: " & numSingle & ",變數型態:" & typeName(numSingle)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub
行數 說明
6將 “15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 CSng() 函數,將變數 str 的值轉換成 long 資料型態,輸入至變數 numSingle
10將變數 numSingle 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
文字轉 Single

CDbl()

CDbl() 函數能將字串資料類型,轉換為 Double 資料類型,語法如下:

CDbl(string)

範例:

Sub str_to_double()
    Dim text1, text2 As String
    Dim str As String
    Dim numDbl As Double

    str = "15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numDbl = CDbl(str)
    text2 = "numDbl 值: " & numDbl & ",變數型態:" & typeName(numDbl)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub
行數 說明
6將 “15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 CDbl() 函數,將變數 str 的值轉換成 double 資料型態,輸入至變數 numDbl
10將變數 numDbl 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
文字轉 Double

Val()

Val() 函數能將字串資料類型,轉換為 Double 資料類型,語法如下:

Val(string)

Val() 函數比較特殊,只會轉換變數中”非數字”之前的數字。說起來很繞口,參考以下 3 個範例比較容易理解。

範例 1:

Sub val1()
    Dim text1, text2 As String
    Dim str As String
    Dim numDbl As Double
    
    str = "15.387Car"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numDbl = Val(str)
    text2 = "numDbl 值: " & numDbl & ",變數型態:" & typeName(numDbl)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub

上述範例中,字串變數的值為”15.397Car”,經過 Val() 函數轉換後的值為 15.387

行數 說明
6將 “15.387Car” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 Val() 函數,將變數 str 的值轉換成 double 資料型態,輸入至變數 numDbl
10將變數 numDbl 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
val 函數-1

範例 2:

Sub val2()
    Dim text1, text2 As String
    Dim str As String
    Dim numDbl As Double
    
    str = "15.3Car87"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numDbl = Val(str)
    text2 = "numDbl 值: " & numDbl & ",變數型態:" & typeName(numDbl)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub

上述範例中,字串變數的值為”15.3Car87″,經過 Val() 函數轉換後的值為 15.3

行數 說明
6將 “15.3Car87” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 Val() 函數,將變數 str 的值轉換成 double 資料型態,輸入至變數 numDbl
10將變數 numDbl 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
val 函數-2

範例 3:

Sub val3()
    Dim text1, text2 As String
    Dim str As String
    Dim numDbl As Double
       
    str = "Car15.387"
    text1 = "str 值: " & str & ",變數型態:" & typeName(str)
    
    numDbl = Val(str)
    text2 = "numDbl 值: " & numDbl & ",變數型態:" & typeName(numDbl)
    MsgBox text1 & vbCrLf & vbCrLf & text2
End Sub

上述範例中,字串變數的值為”Car15.387″,經過 Val() 函數轉換後的值為 0

行數 說明
6將 “Car15.387” 字串輸入至變數 str
7將變數 str 的值以及資料型態輸入至變數 text1。我們使用 typeName() 函數(Microsoft 說明),回傳變數 str 的資料型態
9使用 Val() 函數,將變數 str 的值轉換成 double 資料型態,輸入至變數 numDbl
10將變數 numDbl 的值以及資料型態輸入至變數 text2
11以 MsgBox 函數,顯示變數 text1 及 text2。可參考 MsgBox 函數使用方法及 MsgBox 換行方法
val 函數-3

如果本篇文章有幫助到你,請在下方拍手圖示按 5 下。只要花幾秒鐘登入 Google 或 FB 帳號,不需任何花費就能提供我實質的回饋,支持我繼續創作,謝謝

發表迴響