2013-11-21 44 views
0

我遇到了一個我無法弄清楚的問題(我在VBA中總共是n00b)。我有一個函數根據另一個表中的值填充一組單元格。基本上我提供了一個參數(狀態名稱),它將其轉到另一個工作表,查找該狀態並返回具有該狀態的總體值的所有行。下面是函數:爲什麼更新範圍內的值不會更新相應的單元格?

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,但他們從來沒有出現在實際表(控制板)。

真的很感激任何指針,爲什麼...

回答

2

如何獲取範圍存在問題。試着這樣說:

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

而改變這一點:

myRange(rangeCounter, 1) = statePopulation 

這樣:

myRange.Cells(rangeCounter, 1) = statePopulation 

此外,如果這是或從UDF獲取調用,你會得到一個錯誤,因爲您無法從UDF更新其他單元格。

+0

非常感謝你!這樣做:) –

1

UDF只會返回一個整數值在函數所在的單元格。 UDF s不能更改其他工作表單元格。

+0

謝謝,但我該如何完成我所需要的?我把這個功能放在別的地方嗎?實質上,我需要將其與下拉菜單綁定,以便在用戶選擇另一個值時更新下面的網格。 –

+0

你應該考慮使用**子**而不是** UDF ** –

+0

謝謝加里的學生! –