在循环VBA中求和值

时间:2017-08-08 14:18:11

标签: excel vba excel-vba

我试图根据我使用字典键隔离的唯一标识符来汇总一系列值,通过以下代码:

SearchVar = dictionary.Keys()(v)

Set FoundVar = CurrentPage.Find(What:=SearchVar, LookIn:=xlValues, _ 
LookAt:=xlPart, MatchCase:=False)
Set nextVar = CurrentPage.FindNext(FoundVar)

If Not FoundVar Is Nothing Then

Do Until FoundVar = nextVar

    tempsum = tempsum + ws.Cells(FoundVar.Row, [ReferenceCell].Column).Value

     Set nextVar = CurrentPage.FindNext(nextVar)

    Loop

    End If

然而,当我这样做时,tempsum保持为0.我确定tempsum添加部分中的单元格引用引用了正确的(非零)单元格。可能导致这个问题的原因是什么?

编辑以从下面添加注释:循环确实只运行一次。如果有多个值通过将其更改为

,我将其修改为多次运行
Do until FoundVar.Address = NextVar.Address 

但在这些情况下,它不会对FoundVar的最后一个实例的值求和(因为FoundVar和NextVar地址是相同的)。关于如何获得它的任何建议都包括最后一个值?我认为可以通过说'Do Found FoundVar.Address is Nothing'左右来完成,但不确定正确的语法。

1 个答案:

答案 0 :(得分:0)

你的代码有些错误。试试这段代码。

Dim FoundVar As Range
Dim strAddress As String
SearchVar = dictionary.Keys()(v)

Set FoundVar = CurrentPage.Find(What:=SearchVar, LookIn:=xlValues, _
LookAt:=xlPart, MatchCase:=False)

'Set nextVar = CurrentPage.FindNext(FoundVar)


    If Not FoundVar Is Nothing Then
        strAddress = FoundVar.Address
        Do
        tempsum = tempsum + ws.Cells(FoundVar.Row, [ReferenceCell].Column).Value

         Set FoundVar = CurrentPage.FindNext(FoundVar)

        Loop Until strAddress = FoundVar.Address


    End If