我已经在Microsoft VBA中使用用户表单和文本框编程了一个搜索功能,它在各个方面都像我打算的那样工作,保存它不适用于超过4位数的数字。最初我并不担心,因为我工作的网站没有大于4位数的属性,但管理层对Excel整体印象深刻,并希望将其集成到其他网站中,其中5位数是一个属性(对不起,如果我有点模糊,它搜索的是公司数据)。
评估我的代码,我能看到的唯一可能的原因是
如果UCase(Sheet3.Cells(row_no,field).Value >= UCase(Me.Textbox1.Value)则...
或者可能是由于文本框在用户表单中的操作方式(我觉得它们可能被视为整数,但我不确定,我还没有能够在网上找到任何建议)。
如果你能帮忙的话,我将不胜感激。如果这个问题不能从我提供的信息中得到评估和解决,那么只需通知我,我会删除帖子并重新评估。
我把所有的变量替换为整型变量,但它没有解决这个问题。在网上研究了可能的原因或解决方案,但没有找到任何。
2条答案
按热度按时间d5vmydt91#
你的问题有点含糊。
此场景将单元格A1中的值10与textbox1中的值10进行比较。
的数据
代码将文本框中的 text 10与单元格A1中的 number 10进行比较,并返回False。
字符串
将文本框值转换为数字将返回True:
型
或者,将图纸编号转换为文本也会返回True:
型
我希望你想要第一个例子,因为你似乎想看看一个数字是否大于另一个。
ajsxfq5m2#
你认为文本框的值是什么类型的?- 它是一个字符串,所以除非你把它转换成一个int/long等。它将保持一个字符串。(转换;或者使用像
CLng()
这样的函数(显式转换),或者将值赋给具有适当类型的变量(隐式转换)。在比较值时,必须注意它们是否是正确的类型。这是因为字符串与数字的比较方式不同。例如
"34" > "1000"
为TRUE。因此,请确保将类型转换为所需的类型(在本例中为数值类型,如int和long)。
不过你得小心点。尤其是用户输入。如果你试图转换一个不能用数字表示的字符串,你会得到一个运行时错误。为了防止这种情况发生,您应该在转换之前使用函数
IsNumeric()
。这样你就可以确保用户输入在尝试转换时不会产生错误(下面是一个简单的例子)字符串
可以在代码中的任何位置进行检查(只要是在转换之前和值不能再更改之后)