
本文介紹 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 換行方法 |

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 換行方法 |

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 換行方法 |

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 換行方法 |

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 換行方法 |

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 換行方法 |

範例 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 換行方法 |

範例 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 換行方法 |

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