| 
    
     |  | ▼けんじ さん: 
 セルに書きこんでいるところのコードも是非拝見したいと思っているんですが
 それはそれとして、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
 
 |  |