- 日時: 2011/04/05 11:34
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[基本コード][][] * * キーワード:関数,プロシージャ,戻り値,,, * ***********************************************************************************
-------------------------------------------------------------------------- Re: 動的配列を返すプロシージャについて - takk 2003/01/25-14:39 No.2425 --------------------------------------------------------------------------
手元にVB5.0がないんですが……。 下記のソースで試してみてください。 秋風さんのソースではエラーが多く、また汎用性に欠けるので手直ししました。 ちなみに戻り値をString()にするとエラー出る、とのことですがVB6.0では問題なく動いています。 もしダメそうならnanashiさんの意見通り、戻り値をVariant型で指定してみてください。
'使う時はこんな感じで strTimeList() = split(TimeList, ",")
'ファンクション Private Function Split(ByVal Data As String, Optional ByRef Demiliter As String = " ") As String() Dim lCnt&, lPos&, lLen As Long Dim sBuff() As String '文字列が指定されていない時は要素なしの配列を返す If Len(Data) = 0 Then Split = Array() Exit Function End If 'デミリタの長さを取得 lLen = Len(Demiliter) Do '次のデミリタの位置を取得 lPos = InStr(Data, Demiliter) '配列に追加 If lPos > 0 Then ReDim Preserve sBuff(lCnt) sBuff(lCnt) = Left$(Data, lPos - 1) Data = Mid$(Data, lPos + lLen) lCnt = lCnt + 1 Else ReDim Preserve sBuff(lCnt) sBuff(lCnt) = Data Data = vbNullString End If Loop While Len(Data) > 0 '結果を返す Split = sBuff End Function
|