2014-02-10 36 views
0

我想將字母轉換爲數字。需要文本框Vb6 .text屬性

我有一個保證只有數字放入文本框的子。 我的問題是以下代碼的工作。我有一個文本框(用於數字)和combobbox(信件)

Dim sha As String 
Dim stringposition As Long 
Dim EngNumber As Long 

sha = "abcdefghifjklmnopqrstuvwxyz" 

stringposition = InStr(1, sha, Mid(1, cmbEngletter.Text, 1)) 

MsgBox "stringposition" 

EngNumber = (txtManuNo.Text * 10) + stringposition 

我唯一的問題上面會將與.text的乘法工作。我相信它不會因爲它是一個字符串。請告知如何處理這種情況。

+0

這裏有內置函數。看看Asc和AscW。沒有VB6,所以不能更具體。 – phaedra

+0

只要txtManuNo中的文本是數字,它就會工作。 VB6爲你做了一個隱式轉換。我贊同phaedra,並且懷疑你是否做了比需要更多的工作。 – jac

回答

0

您可以使用CLng函數()將字符串轉換爲一個長變量

CLng函數()將拋出一個錯誤,雖然,如果它不喜歡的字符串的內容(例如,如果它包含非數字字符),所以用它當你確定自己的字符串將只包含數字

更寬容是它使用瓦爾()將字符串轉換成數值變量(double默認情況下)

我還建議你看看以下功能:

  • 升序():返回一個字符
  • CHR $()的ASCII值:羽ASCII值成字符
  • 左$():返回一個字符串
  • CSTR反應器的第一字符( ):將數字轉換成字符串

我想在你的代碼,你的意思是,以顯示你的變量stringposition而不是單詞「stringposition」的內容,所以你應該刪除「」

我做懷疑雖然哇T優試圖用你的代碼來完成,但應用上述到您的代碼給出:

Dim sha As String 
Dim stringposition As Long 
Dim EngNumber As Long 

sha = "abcdefghifjklmnopqrstuvwxyz" 

stringposition = InStr(1, sha, Left$(cmbEngletter.Text, 1)) 

MsgBox CStr(stringposition) 

EngNumber = (Val(txtManuNo.Text) * 10) + stringposition 

我用瓦爾(),因爲我不能肯定你txtManuNo將只包含數字

爲了確保用戶只能輸入數字,你可以使用下面的代碼:

Private Sub txtManuNo_KeyPress(KeyAscii As Integer) 
    Select Case KeyAscii 
    Case vbKeyBack 
     'allowe backspace 
    Case vbKey0 To vbKey9 
     'allow numbers 
    Case Else 
     'refuse any other input 
     KeyAscii = 0 
    End Select 
End Sub 

的用戶仍然可以輸入非數字charcters具有儘管其他方法,如通過鼠標操作複製粘貼,但它是一個快速簡便的第一過濾

+1

嗨Hrqls我最終在txtManuno上使用了Val函數。它完美的作品。謝謝。 – Systemdude

+0

我的代碼做的是它有2個字段(好幾十個)。正如你上面提到的,我也有一個小組,確保在文本字段和組合框中只輸入數字來選擇字母。我的代碼從製造商那裏獲得價值,認爲208H將價值轉化爲客戶想要的價值,並在少數幾個數據庫和幾個數據庫中設置該價值。 – Systemdude