2列10行のcsvファイルのデータを一行ずつ取り込んで、
列の数値の大きさによって、判断を変えるというプログラムを作っています。
しかし、動いてくれません・・・ご教授よろしくお願いします。
Dim buf As String
Dim FileNo As Integer 'ファイル番号
Dim lastdata() As String
Const FileName = "sample.csv"
FileNo = FreeFile
Open FileName For Input As FileNo
Do Until EOF(FileNo)
Line Input #FileNo, buf
lastdata = Split(buf, ",")
If lastdata(1) < lastdata(0) Then
Call Command2_Click
Label1.Caption = lastdata(0)
Else
Call Command3_Click
Label1.Caption = lastdata(1)
End If
Loop
Close #FileNo
追加です。
csvファイルの一行目しか取り込んでいないようです。
追加です。
csvファイルの一行目しか取り込んでいないようです。
> csvファイルの一行目しか取り込んでいないようです。
ちゃんと全行読み込めているようですが?
1行1行ステップ実行しながら変数の中身を確認してみてはいかが?
Label1.Caption を共通で使ってたり
Command2_Click, Command3_Click の処理に問題があるのでは?
ありがとうございます。
特攻隊長まるるうさんがおっしゃったように、全行取り込めているようです。
Command2_Click, Command3_Click の処理は、ぞれぞれ映像を表示するように設定しています。
オブジェクトにCommand2, Command3をおいているのですが、それをクリック
してもちゃんと動作するので、そこには問題がないように思われます。
If文が一行目の処理しかしていないようです。
ありがとうございます。
特攻隊長まるるうさんがおっしゃったように、全行取り込めているようです。
Command2_Click, Command3_Click の処理は、ぞれぞれ映像を表示するように設定しています。
オブジェクトにCommand2, Command3をおいているのですが、それをクリック
してもちゃんと動作するので、そこには問題がないように思われます。
If文が一行目の処理しかしていないようです。
csvファイルの列の数値というのは桁数同じなんでしょうか?
>列の数値の大きさによって、判断を変えるというプログラムを作っています。
提示のコードだと数値の比較ではなく文字列の比較なので
例えば、"11"と"101"を比較した場合は"11"の方が大きな値とみなされますが
その辺大丈夫ですかね?
subaruさんありがとうございます。
ファイルのなかは一桁なので問題はないかと思います。
しかし、文字列だとそのような比較をするとは知りませんでした。
ありがとうございました。
> If文が一行目の処理しかしていないようです。
ちゃんと全行比較されているようですが?
1行1行ステップ実行しながら変数の中身を確認してみてはいかが?
特攻隊長まるるうさんありがとうございます。
Do Until文の処理が早すぎたようで、sleepをおいたら動作しました。
みなさん色々ありがとうございました。
> Do Until文の処理が早すぎたようで、sleepをおいたら動作しました。
Captionなどは最後に代入した物が有効なので,
途中の物が上書きされていた,ということはありませんか?
一行読んで,表示して,時間が経ったら次の行,というようなことがやりたいのであれば,
タイマーを使って,タイマーのイベントハンドラ中で,ループの1回分の処理を行うなど,
待つ処理の間はWindowsに表示処理等をさせるようにしてください。
# タイマーにしたらタイマーにしたで再入問題などが発生しますが。
ツイート | ![]() |