| 
    
     |  | やまごんさん、こんにちは 
 >ところで、質問があるのですが、
 >Function cal(x As String)
 >  cal = Range(x).Range("A" & ActiveCell.Row - Range(x).Row + 1) + 1
 >End Function
 >の"A"の意味は、
 >今回定義したdataが一列の配列なので、配列の一列目という意味ですよね。
 >もし、dataが2列の配列であった場合、2列目の値を取得するには、”B"とすればよいのですね。
 です。^^
 
 >で、ActiveCellでは、そのセルを選択しないと値が変化しません。
 >コピー&ペーストでは、それぞれのセルがアクティブにならないので、それぞれのセルを選択し、一度アクティブにする必要があります。
 >コピー&ペーストで値が変更できる方法って無いのでしょうか?
 
 ですから、VBAの関数としてはichinoseさんの回答が正解です。
 ichinoseさんの回答の関数であればコピペでもいけますよね。
 元の値が変更になった場合にも対応してますよ。
 
 #私の回答は、あくまで「範囲」および「範囲名」に対する理解を深めるための「参考例」です・・^^;
 
 
 |  |