私の目的は、実際の行にユーザー定義関数を使用して特定の列の値を追加することです。列は別の表に示されています。私は行の名前を読んで、実際の値を計算し、それらを合計しています。この関数はExcelから1回呼び出されたが、4回実行された。最後に、循環参照エラーを示します。 excelファイルにこのようなエラーはありません。udfが42だけ戻ってエラーがないかどうかを確認しました。最初に私はApplication.Callerを疑ったが、除外した。循環参照はユーザー定義関数ですVBAはExcel
Function SumColumnsWithSuffix(suffix As String, rowNumber) As Integer
'can be used only in Összesíto table
Dim myTable As Excel.ListObject
Dim mySheet As Excel.Worksheet
Dim myRow As Excel.ListRow
Set mySheet = ThisWorkbook.Worksheets("összesíto")
Set myTable = mySheet.ListObjects("Számlák")
Dim columnName As String
result = 0
For Each myRow In myTable.ListRows
columnName = Intersect(myRow.Range, myTable.ListColumns("Oszlop név").Range)
columnName = "Összesíto[" & columnName & " " & suffix & "]"
'actualRow = Application.Caller.row
'rowName = actualRow & ":" & actualRow
rowName = rowNumber & ":" & rowNumber
myRowRange = Range(rowName)
actualValue = Intersect(Range(columnName), Range(rowName))
result = result + actualValue
Next myRow
SumColumnsWithSuffix = result
End Function
私はより多くの変数を宣言し、異なるタイプのデータに対してそれらを再利用しません。コードを明確にし、簡単なエラーを発見するのに役立ちます。これらの動作のいくつかを強制するために、VBAファイルの先頭に 'option explicit'を入れてください。 'columnName'を使って、範囲参照(' Intersect'から)と範囲アドレス(文字列)の両方を保持します。これはあなたが期待していない文字列を作成している可能性があります。 – JamesFaix