为什么更新某个范围内的值不会更新相应的单元格?

时间:2013-11-21 18:25:28

标签: vba excel-vba excel

我遇到了一个我无法弄清楚的问题(我在VBA中总计n00b)。我有一个函数,它根据另一个表中的值填充一组单元格。基本上我提供了一个参数(状态名称),它将另一个Sheet,查找该状态并返回具有该状态的总体值的所有行。这是功能:

Public Function MyFunction2(parVal As String)
    myRange = Worksheets("Dashboard").Range("A20:A3000")
    rangeCounter = 1
    For Each cell In Worksheets("StateList").Range("A2:A60").Cells
        If cell.Value = parVal Then
            stateRow = cell.EntireRow
            statePopulation = stateRow(1, 8)
            myRange(rangeCounter, 1) = statePopulation

            rangeCounter = rangeCounter + 1
        End If
    Next cell
    MyFunction2 = rangeCounter
End Function

它正确查找值并正确地将它们插入myRange,但它们从未出现在实际的Sheet(仪表板)中。

非常感谢任何关于为什么......

的指示

2 个答案:

答案 0 :(得分:2)

您如何获得该范围存在问题。试试这样:

Dim myRange As Range
Set myRange = Worksheets("Dashboard").Range("A20:A3000")

并改变这一点:

myRange(rangeCounter, 1) = statePopulation

到此:

myRange.Cells(rangeCounter, 1) = statePopulation

此外,如果从UDF调用此函数,则会出现错误,因为您无法从UDF更新其他单元格。

答案 1 :(得分:1)

UDF 只会向函数所在的单元格返回一个整数值。 UDF 无法更改其他工作表单元格。