Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel错误处理不匹配类型13_Excel_Vba_Error Handling_Mismatch - Fatal编程技术网

VBA Excel错误处理不匹配类型13

VBA Excel错误处理不匹配类型13,excel,vba,error-handling,mismatch,Excel,Vba,Error Handling,Mismatch,这是我第一次编写一段代码,实际上它试图做一些事情,而我在编写错误处理程序时遇到了一些麻烦。代码尝试将“tosearch”与范围I1:I10匹配。如果找到匹配项且单元格为空,则请求用户输入 显然,在匹配循环时存在一个问题,因为只要嗅到一点不匹配,循环就会中断。我试图用“If-iserror(etc.)”来解决这个问题,但仍然得到不匹配错误类型13,调试器将我指向这一行 If IsError(myvalue = Application.Match(tosearch, Range("i1:i10"),

这是我第一次编写一段代码,实际上它试图做一些事情,而我在编写错误处理程序时遇到了一些麻烦。代码尝试将“tosearch”与范围I1:I10匹配。如果找到匹配项且单元格为空,则请求用户输入

显然,在匹配循环时存在一个问题,因为只要嗅到一点不匹配,循环就会中断。我试图用“If-iserror(etc.)”来解决这个问题,但仍然得到不匹配错误类型13,调试器将我指向这一行

If IsError(myvalue = Application.Match(tosearch, Range("i1:i10"), 0)) Then
请忽略下面可怕的、杂乱无章的混乱。它可以(只是)工作,虽然它还没有任何实际用途,但我希望使用它来快速识别数组之间的匹配,同时还可以控制“正确”匹配是否显示正确的信息

如果有人有任何答案,我们将非常感谢你的帮助

Dim myvalue As String
Dim myrng As Long
Dim tosearch As String
Dim myrnglimit As Long
Dim Uchoose As String
Dim animal As Variant
Dim blankchck As String

myrnglimit = 15

For myrng = 2 To myrnglimit

   'isblank check
blankchck = Range("c" & myrng).Value
    If blankchck = "" Then

'sets tosearch as each cell
tosearch = Range("a" & myrng).Value

     'error checker then it matches each cell to the table hardcoded into the code
If IsError(myvalue = Application.Match(tosearch, Range("i1:i10"), 0)) Then
GoTo nextloop:
Else

      myvalue = Application.Match(tosearch, Range("i1:i10"), 0)

     'fills in the second column with Animal data
      animal = Range("j" & myvalue).Value
      Range("a" & myrng).Offset(0, 1).Value = animal

'User input for animal
Uchoose = MsgBox("Excel says : " & Range("k" & myvalue).Value & ". So are " & animal & "                 good?", vbYesNoCancel, "Status")

If Uchoose = vbYes Then
Range("a" & myrng).Offset(0, 2).Value = "Good"
    ElseIf Uchoose = vbNo Then
         Range("a" & myrng).Offset(0, 2).Value = "Bad"
     ElseIf Uchoose = vbCancel Then
         GoTo nextloop:
End If


'Select case to identify 1004 mismatch and skip
nextloop:

'Error checker if
End If
'Avoidblank if
End If

Next myrng

我认为问题可能是因为您的范围内的数据类型与字符串变量toSearch之间存在差异。我建议进行如下研究:

Dim tosearch As Variant
下面的链接描述了一个类似的问题以及与我在这里定义的问题类似的解决方案


我说不出你的问题到底是什么?你应该使用
如果iError(Application.Match(tosearch,Range(“i1:i10”),然后
如果没有错误,那么将结果写入一个变量这样做了,我不小心在错误捕捉器的“myvalue=”中留下了,谢谢。