excel - 尽管在 excel 工作表中有匹配项,但 Application.Match 函数为何无法正常工作?
问题描述
代码如下:
Private Sub txtv_AfterUpdate()
Total_rows_Entries = Worksheets("Entries").Range("A" & Rows.Count).End(xlUp).Row
If IsError(Application.Match(txtv.Value, Worksheets("Entries").Range("A2:A" & Total_rows_Entries), 0)) = False Then
MsgBox "This voucher number has already been used previously. Voucher numbers cannot be duplicated."
End If
End Sub
txtv.Value 是一个数字类型,它是文本框的值。
我匹配的目的是如果工作表中已经有许多“123”,那么它应该返回消息框,但无论我将类型更改为.Text
或.Value
手动将excel中的单元格类型更改为任一,它总是绕过它一般、文本或数字。
解决方案
试试这个广泛的比较。
If not (IsError(Application.Match(clng(txtv.Value), Worksheets("Entries").columns(1), 0)) And _
IsError(Application.Match(cstr(txtv.Value), Worksheets("Entries").columns(1), 0))) Then
MsgBox "This voucher number has already been used previously." & vblf & _
"Voucher numbers cannot be duplicated."
End If
或者,尝试一些计算密集度稍高的东西,但它并不关心它正在寻找的值是字符串还是数字。
If cbool(Application.countif(Worksheets("Entries").columns(1), txtv.Value)) Then
MsgBox "This voucher number has already been used previously." & vblf & _
"Voucher numbers cannot be duplicated."
End If
推荐阅读
- python - 在熊猫的一行中检查多个空白字段
- variables - localStorage 只使用局部变量?
- python - Cloudwatch 发送到 SNS 的 JSON 有效负载中有什么?我怎样才能读取这些数据?
- python - 替换python列表中的特定模式索引项
- ssis - 无法启动程序 'DTS' OLE 已发送请求并正在等待回复?
- javascript - jQuery - 单击文件输入的父级并触发文件输入的单击事件后,它返回“递归过多”
- java - 如何在打开另一个 JFrame 时关闭一个 JFrame?
- jenkins - 我们如何通过使用与 Jenkins 中的代码相同的管道来传递(参数)三个节点从变量
- memory - 如何使用 gdb 或任何其他工具通过加载或存储操作(ARM 处理器)找到所有内存访问地址
- algorithm - BFS可以用来识别最远的顶点吗?