Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


217 / 76616 ←次へ | 前へ→

【82066】ユーザー関数(引数・戻り値とも配列)にExcelシートから配列を渡したい
質問  popopo E-MAIL  - 22/9/9(金) 17:57 -

引用なし
パスワード
   関数(引数・戻り値とも配列)を
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
---

64 hits

【82066】ユーザー関数(引数・戻り値とも配列)にExcelシートから配列を渡したい popopo 22/9/9(金) 17:57 質問[未読]
【82067】Re:ユーザー関数(引数・戻り値とも配列)に... マナ 22/9/9(金) 22:26 発言[未読]
【82068】Re:ユーザー関数(引数・戻り値とも配列)に... popopo 22/9/10(土) 2:25 質問[未読]
【82069】Re:ユーザー関数(引数・戻り値とも配列)に... マナ 22/9/10(土) 10:16 発言[未読]
【82070】Re:ユーザー関数(引数・戻り値とも配列)に... マナ 22/9/10(土) 10:26 発言[未読]
【82071】Re:ユーザー関数(引数・戻り値とも配列)に... ヘビー 22/9/23(金) 19:05 発言[未読]

217 / 76616 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free