【问题标题】:excel vba check for Hebrew in text entered, using keypress keyasciiexcel vba检查输入文本中的希伯来语,使用keypress keyascii
【发布时间】:2016-08-20 20:24:31
【问题描述】:

在我的 Excel-2013 VBA 项目中,我有一个带有文本框的用户窗体。我需要这个文本框来只接受数字、A-Z、a-z 和 27 个希伯来字母。

Private Sub my_TextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If (Not (KeyAscii > 47 And KeyAscii < 58))  And _          <= 0-9
       (Not (KeyAscii > 64 And KeyAscii < 91))  And _          <= A-Z
       (Not (KeyAscii > 96 And KeyAscii < 123)) And _          <= a-z
       (Not (KeyAscii > 127 And KeyAscii < 155)) Then          <= Hebrew
          KeyAscii = 8
          Beep
    End If
End Sub

除了希伯来语外,工作正常。
它不能将 ASCII 128 到 154 识别为希伯来语(这些值可在 ASCII 代码页 862 中找到)。
也就是说,尝试在文本框中输入希伯来字母会导致哔声。
如何告诉 Excel 使用 ASCII 代码页 862?

【问题讨论】:

  • 尝试更改字体或检查 KeyAscii 数字是什么
  • 你试过Debug.Print KeyAscii吗?它应该告诉你使用了什么......
  • @Dirk Reichel - 非常感谢,Dirk。 (我自己应该想到的......)。似乎 ASCII 中的希伯来字母介于 1488 和 1514 之间。现在工作正常。再次感谢!

标签: excel vba keypress hebrew extended-ascii


【解决方案1】:

Dirk Reichel 给了我一个简单的想法,即在 my_TextBox 中输入希伯来字符时调试和检查其中的内容。
这就是我发现 ASCII 中的希伯来字母在 1488 和 1514 之间的原因。
我现在的代码是:

Private Sub my_TextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If (Not (KeyAscii > 47 And KeyAscii < 58))  And _          <= 0-9
      (Not (KeyAscii > 64 And KeyAscii < 91))  And _          <= A-Z
      (Not (KeyAscii > 96 And KeyAscii < 123)) And _          <= a-z
      (Not (KeyAscii > 1487 And KeyAscii < 1515)) Then        <= Hebrew
         KeyAscii = 8
         Beep
   End If
End Sub  

现在它也允许希伯来语。
谢谢德克。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多