【问题标题】:Vb6 .text property for textbox required需要文本框的 Vb6 .text 属性
【发布时间】:2014-02-11 15:52:51
【问题描述】:

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

我有一个 sub 可以确保只有数字被放入文本框中。 我的问题是以下代码是否有效。我有一个文本框(用于数字)和组合框(用于字母)

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。我相信它不会,因为它是一个字符串。请就如何处理这种情况提出建议。

【问题讨论】:

  • 为此有内置函数。查看 Asc 和 AscW。没有 VB6,所以不能更具体。
  • 只要 txtManuNo 中的文本是数字,它就会起作用。 VB6 为您进行了隐式转换。我有点同意 phaedra 的观点,想知道你是否做的工作比需要的多。

标签: vb6


【解决方案1】:

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

CLng() 如果它不喜欢字符串的内容(例如,如果它包含一个非数字字符),它会抛出一个错误,所以只有在你确定你的字符串只包含数字时才使用它

更宽容的是使用 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

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

【讨论】:

  • 嗨 Hrqls 我最终在 txtManuno 上使用了 Val 函数。它完美地工作。谢谢。
  • 我的代码所做的是它有 2 个字段(好几十个)。正如您在上面提到的,我也有一个 sub 确保在文本字段和组合框中只输入数字来选择字母。我的代码从制造商那里获取值,比如 208H 将其转换为客户想要的值,并在几个程序和几个数据库中设置该值。
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 2012-04-12
  • 2020-09-07
相关资源
最近更新 更多