csvファイルを読み込み、条件文を動作するには?


zooo  2008-10-23 00:42:37  No: 140701

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


zooo  2008-10-23 00:45:34  No: 140702

追加です。

csvファイルの一行目しか取り込んでいないようです。


zooo  2008-10-23 00:45:42  No: 140703

追加です。

csvファイルの一行目しか取り込んでいないようです。


特攻隊長まるるう  2008-10-23 01:22:08  No: 140704

> csvファイルの一行目しか取り込んでいないようです。
ちゃんと全行読み込めているようですが?
1行1行ステップ実行しながら変数の中身を確認してみてはいかが?

Label1.Caption を共通で使ってたり
Command2_Click, Command3_Click の処理に問題があるのでは?


zooo  2008-10-23 01:37:04  No: 140705

ありがとうございます。
特攻隊長まるるうさんがおっしゃったように、全行取り込めているようです。

Command2_Click, Command3_Click の処理は、ぞれぞれ映像を表示するように設定しています。

オブジェクトにCommand2, Command3をおいているのですが、それをクリック
してもちゃんと動作するので、そこには問題がないように思われます。

If文が一行目の処理しかしていないようです。


zooo  2008-10-23 01:37:06  No: 140706

ありがとうございます。
特攻隊長まるるうさんがおっしゃったように、全行取り込めているようです。

Command2_Click, Command3_Click の処理は、ぞれぞれ映像を表示するように設定しています。

オブジェクトにCommand2, Command3をおいているのですが、それをクリック
してもちゃんと動作するので、そこには問題がないように思われます。

If文が一行目の処理しかしていないようです。


subaru  2008-10-23 02:54:11  No: 140707

csvファイルの列の数値というのは桁数同じなんでしょうか?

>列の数値の大きさによって、判断を変えるというプログラムを作っています。
提示のコードだと数値の比較ではなく文字列の比較なので
例えば、"11"と"101"を比較した場合は"11"の方が大きな値とみなされますが
その辺大丈夫ですかね?


zooo  2008-10-23 05:59:26  No: 140708

subaruさんありがとうございます。
ファイルのなかは一桁なので問題はないかと思います。

しかし、文字列だとそのような比較をするとは知りませんでした。
ありがとうございました。


特攻隊長まるるう  2008-10-23 20:20:04  No: 140709

> If文が一行目の処理しかしていないようです。 
ちゃんと全行比較されているようですが?
1行1行ステップ実行しながら変数の中身を確認してみてはいかが?


zooo  2008-10-23 23:08:49  No: 140710

特攻隊長まるるうさんありがとうございます。
Do Until文の処理が早すぎたようで、sleepをおいたら動作しました。

みなさん色々ありがとうございました。


YuO  2008-10-24 00:35:12  No: 140711

> Do Until文の処理が早すぎたようで、sleepをおいたら動作しました。

Captionなどは最後に代入した物が有効なので,
途中の物が上書きされていた,ということはありませんか?

一行読んで,表示して,時間が経ったら次の行,というようなことがやりたいのであれば,
タイマーを使って,タイマーのイベントハンドラ中で,ループの1回分の処理を行うなど,
待つ処理の間はWindowsに表示処理等をさせるようにしてください。
# タイマーにしたらタイマーにしたで再入問題などが発生しますが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加