我正在努力使用我在VBA中构建的功能。我尝试在函数内部引用的另一张表中使用它,但是我得到循环引用错误。有人可以帮帮我吗?这是我第一次在VBA中编写代码,所以请理解错误是否......很有趣。
Function Dividend(row As String, col As Date) As Variant
Dim Table As Range
Dim Blgdata() As Variant
Dim v As Integer
Dim h As Integer, var As Date
v = 666
h = 27
Sheets(3).Activate
Set Table = Range(Cells(179, 1), Cells(844, 27))
Debug.Print Table.Address
ReDim Blgdata(1 To v, 1 To h)
Blgdata = Table
Dim i As Integer, j As Integer
'For i = 1 To 666
' For j = 1 To 26
' Debug.Print Blgdata(i, j)
' If Blgdata(i, j + 1) = 0 Then
' Exit For
'
' End If
'Next j
'Next i
For i = 1 To v Step 7
If Blgdata(i, 1) = row Then
For j = 3 To h
var = Blgdata(i + 1, j)
'Debug.Print var
If (var = col) Then
Dividend = Blgdata(i + 4, j)
Exit For
End If
If j = h Then
Dividend = "-"
Exit For
End If
If Blgdata(i, j + 1) = 0 Then
Exit For
End If
Next j
End If
Next i
End Function
答案 0 :(得分:0)
关于编写vba函数的第一条建议是让你的函数有机会做更多的工作,而不是你为它编写的那个工作。例如,而不是你的
sheets(3).Activate
您可以使用Activesheet或更好的方法,将函数传递给您想要操作的范围。
你的v和h变量也一样,也许使用
h = inputrange.columns.count()
功能,因此您可以遍历不同大小的范围。
所有这些都表明我无法真正复制或测试您的循环引用错误,因为它只能写在您的特定工作表上,而我没有。
作为一个通用的建议,如果你真的想要一个循环引用(就像需要迭代解决方案的问题一样),你可以检查enable iterative calculation复选框,它将允许循环引用。
祝你好运,
埃德加。