Excel VBA質問箱 IV

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

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


44015 / 76732 ←次へ | 前へ→

【37740】Re:配列と配列の要素数を受け取りたい
お礼  sin  - 06/5/17(水) 15:56 -

引用なし
パスワード
   ▼ハト さん:
ご返信ありがとうございます。

>既に回答は出ていますが、こんな感じに修正しても可能です
>例としてのケースで要素数は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
すいません、「要素数」という表現が間違ってました。
「配列の最後のインデックス番号」と言いたかったので、
今回の場合3で問題ないです。
(これも UBound であっさり解決しました)

>
>>    End If
>>  Loop
>>
>>  testf = cnt   '←要素数を戻り値として返す
>>  ' res_str()   '←この配列も戻り値として返したい
>>
>>End Function
>>
>>―――――――――――――――――――――――――――――――――――――


今回の質問に関しては、Jaka さん、ハチさんに教えていただいた
Split関数、UBound関数、LBound関数
で簡単に出来ることが分かりました。
本当に勉強不足でした。

ただ、「カンマが続いた場合」や「カンマの間が空白スペースだった場合」などは
無視するといった処理も織り込むので今回は、ハチさんとハトさんに教えて
いただいたやり方を合わせて取り入れたいと思います。
ありがとうございました。

0 hits

【37734】配列と配列の要素数を受け取りたい sin 06/5/17(水) 12:56 質問
【37735】Re:配列と配列の要素数を受け取りたい Jaka 06/5/17(水) 13:30 発言
【37737】Re:配列と配列の要素数を受け取りたい ハチ 06/5/17(水) 13:32 発言
【37739】Re:配列と配列の要素数を受け取りたい sin 06/5/17(水) 14:01 お礼
【37736】Re:配列と配列の要素数を受け取りたい ハチ 06/5/17(水) 13:30 回答
【37744】Re:配列と配列の要素数を受け取りたい sin 06/5/17(水) 17:26 質問
【37745】Re:配列と配列の要素数を受け取りたい ハチ 06/5/17(水) 17:50 発言
【37763】Re:配列と配列の要素数を受け取りたい sin 06/5/18(木) 11:06 お礼
【37738】Re:配列と配列の要素数を受け取りたい ハト 06/5/17(水) 13:42 回答
【37740】Re:配列と配列の要素数を受け取りたい sin 06/5/17(水) 15:56 お礼

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