VBA类型不匹配多个子循环和长范围

时间:2015-08-23 05:00:40

标签: vba excel-vba loops nested-loops excel

这里的VBA相当新,但已经管理了这个循环通过大量工作表的脚本,在整个过程中完成了一个sumif函数 - 存储然后在每个循环后打印。有65张,有些可能会在将来添加,所以我在命名表(“tab_ref [Tab]”)中列出了每个选项卡名称,并将其用作循环的参考。

我遇到了一个非常奇怪的错误。当我将纸张范围设置为表格中列出的前4张纸张(“H15:H18”)时,该功能完美无缺,但是当我尝试遍历整个范围(或者甚至只是一个 - “H15:H19”)时! )我在代码中进一步出现类型不匹配错误。任何人都可以看到导致此错误的原因吗?修复或任何建议将不胜感激。谢谢!

Sub ClusterLevel()

Dim inputcell As Range, itemrange As Range, sheetrange As Range, _
FullRow As Range, Items As Range, CalcRange As Range, printCalc As Range

Set inputcell = Sheets("Calculations").Range("C10")
Set itemrange = Sheets("Calculations").Range("A21:A22")
Set sheetrange = Sheets("Reference Sheet").Range("H15:H19") 'Sheets listed here. "H15:H18" WORKS - BUT "tab_ref[Tab]" DOESN'T!!

i = 21

For Each entry In itemrange
sumState = 0

For Each sheet In sheetrange
    Set FullRow = Sheets(sheet.Value).Range("A5:EE5")
    Set Items = Sheets(sheet.Value).Range("A6:A500")

    For Each Cell In FullRow
        If Cell.Value = inputcell.Value Then 'TYPE MISMATCH HERE
            With FullRow
            Set SumRange = Range(.Cells(Cell.Row - 3, Cell.Column), .Cells(520, Cell.Column))
            sumState = sumState + WorksheetFunction.SumIf(Items, entry, SumRange)
            End With
        End If
    Next Cell
Next sheet

Set printCalc = Sheets("Calculations").Cells(i, 4)
printCalc = sumState
i = i + 1
Next entry

End Sub

2 个答案:

答案 0 :(得分:0)

对主要工作表循环进行以下修改。

appAPI.ready(function($) {
 appAPI.browserAction.setResourceIcon('buttonIcon.jpg');
});

如果找不到,将创建一个工作表。我仍然不清楚产生错误的是什么线,但这是我最好的猜测。如果在工作表队列的末尾创建了新工作表,则需要检查紧密存储的工作表名称。如果没有,请提供产生错误的实际代码行。

答案 1 :(得分:0)

FullRow中的单元格是在每个选项卡上使用vlookup创建的,有些是返回N / A.引用时抛出错误。

通过转换为字符串来轻松修复: If CStr(Cell.Value) = CStr(inputcell.Value Then)

感谢所有人的帮助!