错误从函数循环引用VBA

时间:2017-06-09 19:13:24

标签: vba function circular-reference

我正在努力使用我在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

1 个答案:

答案 0 :(得分:0)

关于编写vba函数的第一条建议是让你的函数有机会做更多的工作,而不是你为它编写的那个工作。例如,而不是你的

sheets(3).Activate

您可以使用Activesheet或更好的方法,将函数传递给您想要操作的范围。

你的v和h变量也一样,也许使用

h = inputrange.columns.count()  

功能,因此您可以遍历不同大小的范围。

所有这些都表明我无法真正复制或测试您的循环引用错误,因为它只能写在您的特定工作表上,而我没有。

作为一个通用的建议,如果你真的想要一个循环引用(就像需要迭代解决方案的问题一样),你可以检查enable iterative calculation复选框,它将允许循环引用。

祝你好运,

埃德加。