在VBA中键入不匹配错误13

所以我正在为VBA中的macros编写代码,并且每当我尝试运行它时,我总是在同一行上得到相同的错误。 奇怪的是这行在程序的早期工作,但它停止工作,我第二次使用它(我没有改变任何代码,我从字面上复制和粘贴它)。 这是代码:

positioninDailyVisitors = Application.Match(originaldata.Worksheets("Top Visitors Chart").Range(columns(index) & counter + 11), originaldata.Worksheets("Daily Visitors").Range("A5:A627"), 0) 

有点背景: positioninDailyVisitors是一个整型variables, columns(index)是一个Stringtypes的数组,它列出了像“A”,“B”等值。另外,我已经试过使用Application.WorksheetFunction.Match ,它仍然不起作用。

如果Application.Match没有find任何东西, 它会返回一个Variant/Error给调用者 – 而你试图把这个错误分配给一个只有整数的variables==>types不匹配。 投注好钱这是你的问题,因为代码偶尔工作。

请原谅我的低分手绘技巧: 在这里输入图像说明

这样修改你的代码:

 If Not IsError(Application.Match(originaldata.Worksheets("Top Visitors Chart").Range(columns(index) & counter + 11), originaldata.Worksheets("Daily Visitors").Range("A5:A627"), 0)) Then & _ positioninDailyVisitors = Application.Match(originaldata.Worksheets("Top Visitors Chart").Range(columns(index) & counter + 11), originaldata.Worksheets("Daily Visitors").Range("A5:A627"), 0) 

或者也许更可行/可读:

 Dim errVar As Variant errVar = Application.Match(originaldata.Worksheets("Top Visitors Chart").Range(columns(index) & counter + 11), originaldata.Worksheets("Daily Visitors").Range("A5:A627"), 0) If Not IsError(errVar) Then positioninDailyVisitors = CInt(errVar)