シナリオ:私は、セットのコンポーネントの加重でキャッピングプロシージャを実行する関数を持っています。私はすでに試した何私が出力するExcelワークシートへの私の結果出力配列を試してみてください、私は(関数が適用されたExcelのセル上で)値のエラーを取得しておくVBAを使用してワークシートに関数結果配列を出力
:
問題私はこのExcel VBA function to print an array to the workbook
に答えを試みたが、私はまだ同じエラーを取得
質問:私が正しく、この手順を行うことができますどのように?この操作に問題のある関数を使用していますか?
コードの関連部分:(DIM部品およびその他の基本的な操作は、質問の簡潔さを維持するために削除された)あなたが関数を使用して値をバック返すとを通してそれを直接書き込むべきではありません
Function Capping(ISIN As Range, Sector As Range, Weights As Range, W1 As Double, W2 As Double) As Variant
le = UBound(ArISIN)
ReDim Preserve ArCap(le, 8, 1)
For c = 1 To le
ArCap(c, 1, 1) = ArISIN(c, 1)
ArCap(c, 2, 1) = ArSector(c, 1)
ArCap(c, 3, 1) = ArWeight(c, 1)
Next c
For c = 1 To le
s = 0
For i = 1 To le
If ArCap(c, 2, 1) = ArCap(i, 2, 1) Then
s = s + ArCap(i, 3, 1)
End If
Next i
ArCap(c, 4, 1) = s
Next c
For c = 1 To le
If ArCap(c, 4, 1) >= W2 Then
ArCap(c, 5, 1) = 0.03
ArCap(c, 6, 1) = 0.03/ArCap(c, 3, 1) * ArCap(c, 4, 1)
Else
ArCap(c, 5, 1) = "Not Capped"
End If
Next c
suc = 0
scap = 0
For c = 1 To le
If ArCap(c, 5, 1) <> "Not Capped" Then
scap = scap + ArCap(c, 6, 1)
Else
suc = suc + ArCap(c, 3, 1)
End If
Next c
For c = 1 To le
If ArCap(c, 5, 1) = 0.03 Then
ArCap(c, 7, 1) = ArCap(c, 6, 1)
Else
ArCap(c, 7, 1) = ArCap(c, 3, 1)/suc * (1 - s)
End If
Next c
For c = 1 To le
s = 0
For i = 1 To le
If ArCap(c, 2, 1) = ArCap(i, 2, 1) Then
s = s + ArCap(i, 7, 1)
End If
Next i
ArCap(c, 8, 1) = s
Next c
ReDim Preserve OutArray(le, 0)
For c = 1 To le
OutArray(c, 0) = ArCap(c, 7, 1)
Next c
'this is where I am having problems:
ActiveSheet.Range("A4:UC4").Value = WorksheetFunction.Transpose(OutArray)
別々のサブからそれを呼び出すことによって、あなたの機能をテスト - あなたがすることができますそのようにワークシートのセルに値のエラーを表示するのではなく、エラーをデバッグします。 –