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