【发布时间】:2017-06-09 19:13:23
【问题描述】:
我正在努力使用我在 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
【问题讨论】:
-
哪一行代码产生了错误?上面的代码是在工作表中还是在模块中(如果是工作表,是哪一个)?
-
不相关,但签名中的
row As String, col As Date看起来不正确。事实上,这完全令人困惑——未来你会看到那个代码说“WTF?!”从现在起的几个月内。行/列可以合理地预期为引用行/列索引的Long整数。 -
您可能想要使用诸如Rubberduck 之类的工具(免责声明:我管理该开源项目)来帮助您进行适当的缩进。
标签: vba function circular-reference