|
既に回答は出ていますが、こんな感じに修正しても可能です
例としてのケースで要素数は4としたいのか、3にしたいのかで少し修正が必要です
▼sin さん:
>宜しくお願いします。
>
>下記のテストでは、 testf で文字列をカンマで分解して、
>その配列の「要素数」と「配列本体」を tests 受け取りたいと考えています。
>Functionプロシージャ や 配列 について色々調べてみましたが、
>解決方法が見つかりませんでした。
>なにか良い方法があればご教授下さい。
>
>※下記では文字列は"aaa,bb,cccc,ddd"でカンマによって4つに分けられますが、
>実際に使用するときは不定です。
>
>―――――――――――――――――――――――――――――――――――――
>
>Sub tests()
>
> Dim get_res As Integer
dim res_str() As String
>
> get_res = testf("aaa,bb,cccc,ddd") '要素数を受け取る
>'※※※ここで Function testf の配列 res_str() も受け取りたい※※※
get_res = testf("aaa,bb,cccc,ddd", res_str()) '要素数を受け取る
>
>
>End Sub
>
>Function testf(str As String) As Integer '←ここで何か出来そうな気が・・・
Function testf(str As String, res_str() As String) As Integer
>
> Dim stp As Integer 'ストップ位置
> Dim stt As Integer 'スタート位置
> Dim cnt As Integer '配列の要素数
> Dim res_str() As String '結果保存用配列
↑削除
>
> stt = 0
> cnt = 0
> stp = 1
>
> Do Until stp = 0
> ReDim Preserve res_str(cnt)
>
> stp = InStr(stt + 1, str, ",") 'カンマ位置の取得
>
> If stp <> 0 Then 'カンマが検出された場合の処理
> res_str(cnt) = Mid(str, stt + 1, stp - stt - 1)
> cnt = cnt + 1
> stt = stp
> Else 'カンマが検出されかった場合の処理
> res_str(cnt) = Mid(str, stt + 1, Len(str) - stt)
→この場合の要素数が4にしたいなら
cnt =cnt + 1
> End If
> Loop
>
> testf = cnt '←要素数を戻り値として返す
> ' res_str() '←この配列も戻り値として返したい
>
>End Function
>
>―――――――――――――――――――――――――――――――――――――
|
|