は、ここで私はそれが正常に動作して所望の結果を生成するオート()のサブを使用して、それを実行すると、私はExcel VBA:式として呼び出されるVBA関数の実行方法が異なりますか?
Option Explicit
Function AutoFormula(blocks As Range, target As Range)
Dim blockedArr() As String
Dim cellValue As String
Dim ret As String
Dim i As Integer
'sprawdzenie zakresu
If (blocks.Cells.Count > 1) Then
AutoFormula = "Tylko 1 komórka jako parametr!"
Exit Function
End If
'wczytanie komorki
cellValue = blocks.Cells(1, 1).Value
'split
blockedArr = Split(cellValue, ",")
ret = "=WYSZUKAJ.PIONOWO(E7;$E$2:$G$5;3;FAŁSZ)"
For i = LBound(blockedArr, 1) To UBound(blockedArr, 1)
ret = ret + "+SUMA.JEŻELI(A7:A1000;" + blockedArr(i) + ";G7:G1000)"
Next i
target.Cells(1, 1).FormulaLocal = ret
AutoFormula = 1
End Function
Sub auto()
Call AutoFormula(Worksheets("reorganizacja").Range("D7"), Worksheets("reorganizacja").Range("G7"))
End Sub
を持っているマクロです。しかし、私が=AutoFormula(D7;G7)
のような優れたセルで式と呼ぶと、それはうまくいきません。 Excellセルで#ARGエラーが発生します。私はマクロをデバッグするとき、それはtarget.Cells(1, 1).FormulaLocal = ret
行まで正しく行き、私がそれを踏むと、それを完了せずにすぐに機能が壊れます。 アイデア
エラーの前に 'debug.print ret'を書いて、直接ウィンドウに結果を共有してください。 – Vityata
これは結果です: '= WYSZUKAJ.PIONOWO(E7; $ E $ 2:$ G $ 5; 3;FAŁSZ)+SUMA.JEŻELI(A7:A1000; 135; G7:G1000)'。数式は大丈夫です(サブを実行するとうまくいきます)。問題のある行を単純な文字列 'target.Cells(1,1).FormulaLocal =" john "'に置き換えてみました。結果は同じですので、 'ret'という値の問題のようには見えません。 – ilozen