需要文本框的Vb6 .text属性

时间:2014-02-10 19:48:18

标签: vb6

我正在尝试将字母转换为数字。

我有一个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一起工作。我相信它不会因为它是一个字符串。请告知如何处理情况。

1 个答案:

答案 0 :(得分:0)

您可以使用CLng()将字符串转换为Long变量

如果CLng()不喜欢字符串的内容(例如,如果它包含非数字字符),则抛出错误,所以只有当你确定你的字符串只包含数字<时才使用它/ p>

更宽容的是使用Val()将字符串转换为数字变量(默认为Double)

我还建议你研究以下功能:

  • Asc():返回字符的ASCII值
  • Chr $():将ASCII值转换为字符
  • Left $():返回字符串的第一个字符
  • CStr():将数字转换为字符串

我认为在您的代码中,您的意思是显示变量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

用户仍然可以使用其他方法输入非数字字符,例如通过鼠标操作进行复制粘贴,但它是一个快速简便的第一个过滤器