|
▼けんじ さん:
セルに書きこんでいるところのコードも是非拝見したいと思っているんですが
それはそれとして、F2 を押さないと認識しない件は、配列のデータ型をStringにしているからだと思います。
Variant型にして実行してみてください。
ところで、セル領域への数式一括セットですが、ちょっと難しく考えすぎているかもしれませんね。
新規ブックに、以下のコードを貼り付け
I1:K7に適当な文字列を入れたうえで、
A1 : =UDFTEST(I1) これを K1 までフィルコピー。
そのあと、Test2〜Test7 まで実行してください。
各行のA〜C列に数式を埋め込んでいます。
いずれも、同じ結果(参照する行は異なりますが)になります。
けんじさんのヒントになればと思います。
Function UDFTEST(R As Range) As String
UDFTEST = "abc" & R.Value
End Function
Sub test2()
Range("A2:C2").Formula = "=UDFTEST(I$2)"
End Sub
Sub test3()
Range("A3:C3").FormulaR1C1 = "=UDFTEST(RC[8])"
End Sub
Sub Test4()
Dim v(1 To 1, 1 To 3) As String
v(1, 1) = "=UDFTEST(RC[8])"
v(1, 2) = "=UDFTEST(RC[8])"
v(1, 3) = "=UDFTEST(RC[8])"
Range("A4:C4").Value = v
End Sub
Sub Test5()
Dim v(1 To 1, 1 To 3) As String
v(1, 1) = "=UDFTEST(RC[8])"
v(1, 2) = "=UDFTEST(RC[8])"
v(1, 3) = "=UDFTEST(RC[8])"
Range("A5:C5").FormulaR1C1 = v
End Sub
Sub Test6()
Dim v(1 To 1, 1 To 3) As Variant
v(1, 1) = "=UDFTEST(RC[8])"
v(1, 2) = "=UDFTEST(RC[8])"
v(1, 3) = "=UDFTEST(RC[8])"
Range("A6:C6").Value = v
End Sub
Sub Test7()
Dim v(1 To 1, 1 To 3) As Variant
v(1, 1) = "=UDFTEST(RC[8])"
v(1, 2) = "=UDFTEST(RC[8])"
v(1, 3) = "=UDFTEST(RC[8])"
Range("A7:C7").FormulaR1C1 = v
End Sub
|
|