函数中的错误循环引用VBA

函数中的错误循环引用VBA,vba,function,circular-reference,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

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

关于编写vba函数,我的第一条建议是给函数一个机会,让它可以完成不止一项工作。例如,而不是你的

sheets(3).Activate
您可以使用Activesheet或更好的方法,将要执行操作的范围传递给函数

与v和h变量相同,可能使用

h = inputrange.columns.count()  
函数,以便可以遍历不同大小的范围

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

作为一般建议,如果您确实想要循环引用(就像在需要迭代解决方案的问题中一样),您可以选中复选框,它将允许循环引用

祝你好运


Edgar。

关于编写vba函数,我的第一条建议是给函数一个机会,让它可以完成不止一项工作。例如,而不是你的

sheets(3).Activate
您可以使用Activesheet或更好的方法,将要执行操作的范围传递给函数

与v和h变量相同,可能使用

h = inputrange.columns.count()  
函数,以便可以遍历不同大小的范围

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

作为一般建议,如果您确实想要循环引用(就像在需要迭代解决方案的问题中一样),您可以选中复选框,它将允许循环引用

祝你好运


埃德加。

哪一行代码产生错误?上面的代码是在工作表中还是在模块中(如果是工作表,是哪一个)?不相关,但签名中的
行为字符串,列为日期,看起来根本不正确。事实上,这是完全令人困惑的-未来几个月内,您将看到代码上写着“WTF?!”。行/列应该是引用行/列索引的
整数。您可能需要使用(免责声明:我管理该开源项目)等工具来帮助您进行适当的缩进。哪一行代码会产生错误?上面的代码是在工作表中还是在模块中(如果是工作表,是哪一个)?不相关,但签名中的
行为字符串,列为日期,看起来根本不正确。事实上,这是完全令人困惑的-未来几个月内,您将看到代码上写着“WTF?!”。行/列应该是一个引用行/列索引的
Long
整数。您可能需要使用(免责声明:我管理那个开源项目)之类的工具来帮助您进行适当的缩进。