投稿日 | : 2003/01/27(Mon) 12:04 |
投稿者 | : 秋風 |
Eメール | : |
URL | : |
タイトル | : Re^3: 動的配列を返すプロシージャについて |
こんにちは。
>花チャンさん。
今回は、花ちゃんさんのコードを参考させていただきました。
ありがとうございます。m(_ _)m
作成しましたので、情けないプログラムながら結果を載せておきます。
フォーム部分
Option Explicit
Dim intcheck As Integer
Dim strtime As String
Dim varTimeList As Variant
Dim strList(1 To 8, 19) As String
Dim j As Long 'ループカウンタ
Private Sub Form_Load()
Dim k As Long '1次元配列カウンタ
Dim l As Long '2次元配列カウンタ
k = 1
intfreefileno = FreeFile
Open App.Path & "\稼働報告書.txt" For Input As #intfreefileno
↑あらかじめデータだけ入ってる(8行)テキストファイルを呼び出し。
(このファイルは、値は変化しません。)
For j = 1 To 8 '8行分を配列に格納
Line Input #intfreefileno, strTimeList
varTimeList = split(strTimeList)
For i = 1 To 18
strList(k, l) = varTimeList(l) ←ちょっと値の格納の仕方が分からない
為、初心者風になってしまいました。(;_:)
l = l + 1
Next i
k = k + 1
l = 0
Next j
Close #intfreefileno
End Sub
標準モジュール部分
Function split(Time As String) As Variant
Dim intcheck As Integer
Dim intlen As Integer
Dim strtime() As String
i = 0
Do
intlen = Len(Time)
intcheck = InStr(Time, ",")
ReDim Preserve strtime(i) As String
If intcheck <> 0 Then
strtime(i) = Mid(Time, 1, intcheck - 1)
Time = Mid(Time, intcheck + 1, intlen - intcheck)
i = i + 1
End If
Loop Until (intcheck = 0) ←最後のデータは、全て"END"が入っている
為、格納はしていません。
split = strtime
End Function
と自分で改造した部分は素人なプログラムになってしまいましたが、とりあえず
動いているので、これを使用していこうかと思っています。特に、
For i = 1 To 18
strList(k, l) = varTimeList(l)
l = l + 1
Next i
が、いきなり2次元配列に格納できない為、いちいち入れなおす方法にしか
できずに、四苦八苦しています。また、良い方法が無いか考えていきます。
>nanashiさん。
Variant型に致しました。回答ありがとうございます。m(_ _)m
>takkさん。
回答いただき大変感謝しております。ちょっとStringで返すのは、
VB5ではできない為、今回は、上記に書いた通りに致しました。
大変申し訳ありません。m(_ _)m
>魔界の仮面弁士さん。
教えていただきましたHPを確認したところ、大変参考になりました。
ありがとうございました。m(_ _)m