我正在尝试将字母转换为数字。
我有一个sub,它确保只将数字放入文本框中。 我的问题是以下代码的工作原理。我有一个文本框(用于数字)和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 :(得分:0)
您可以使用CLng()将字符串转换为Long变量
如果CLng()不喜欢字符串的内容(例如,如果它包含非数字字符),则抛出错误,所以只有当你确定你的字符串只包含数字<时才使用它/ p>
更宽容的是使用Val()将字符串转换为数字变量(默认为Double)
我还建议你研究以下功能:
我认为在您的代码中,您的意思是显示变量stringposition的内容而不是单词“stringposition”,因此您应该删除“”
我确实想知道您尝试使用代码完成的工作,但将上述内容应用于您的代码会产生:
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
我使用了Val()因为我不确定你的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
用户仍然可以使用其他方法输入非数字字符,例如通过鼠标操作进行复制粘贴,但它是一个快速简便的第一个过滤器