| 
    
     |  | 関数(引数・戻り値とも配列)を Excelワークシートから配列を渡し、ユーザー関数として呼び出したい。
 ご協力下さい。
 
 ・VBAコードからは、問題なく利用可能な関数Pu
 ・Excelワークシートから呼び出し不可。#VALUE!表示
 
 ・以下関数で挟み、VBAからは利用可能
 ・Pre_関数(引数:文字列 戻り値:配列)
 ・Post関数(引数:配列  戻り値:文字列)
 
 ◎・xPack関数(引数:文字列 戻り値:文字列):パッケージ シートからも利用可能
 種々関数を連結したく、高速化からも、直接呼出す方法はないでしょうか?
 宜しくお願い致します。
 
 準備 A1=12, B1=45
 結果
 ・C1=Pre(A1,B1)  '{12,45}スピル表示
 ・C2=Pu(Pre(B1,C1) '#VALUE!
 ・C3=Pu(C1#)    '#VALUE!
 ・C4=Pu({12,45})  '#VALUE!
 ・C5=Pu(Pre("12","45")) '#VALUE!
 
 ・C11=Post(Pre(A1,B1))  '#VALUE!
 ・C12=Post(Pu(Pre(B1,C1)))'#VALUE!
 ・C13=Post(Pu(C1#))    '#VALUE!
 ・C14=Post(Pu({12,45}))  '#VALUE!
 ・C15=Post(Pu(Pre("12","45"))) '#VALUE!
 
 ・C21=xPack(A1,B1) '-1881 正 パッケージ関数
 
 不具合を再現する単純コード 演算内容は問わず
 --
 Public Function Pu(p() As Long) As Long() '配列受取・配列戻り
 Dim ret() As Long: ReDim ret(UBound(p))
 ret(0) = p(0) + p(1) '和
 ret(1) = p(0) - p(1) '差
 Pu = ret
 End Function
 
 Public Function Pre(S1 As String, S2 As String) As Long()'演算 配列戻り
 Dim ret() As Long: ReDim ret(1)
 ret(0) = CInt(S1)
 ret(1) = CInt(S2)
 Pre = ret
 End Function
 
 Public Function Post(p() As Long) As String '加工、戻り値文字列
 Post = p(0) * p(1) '積
 End Function
 
 Public Function xPack(S1 As String, S2 As String) As String '引数,戻り値文字列
 xPack = Post(Pu(Pre(S1, S2)))
 End Function
 ---
 
 |  |