MSFlexGridの問題とファイルの読み込み問題です


yangjiayi  URL  2005-05-20 23:08:53  No: 121807

こんにちわ。

MSflexGridをコントロールバーに追加して、Excelのような表を作りました。

Private Sub MSFlexGrid1_GotFocus()
    MSFlexGrid1.Row = 0: MSFlexGrid1.Text = "日付"
    MSFlexGrid1.Col = 1: MSFlexGrid1.Text = "曜日"
    MSFlexGrid1.Col = 2: MSFlexGrid1.Text = "出勤時間"
    MSFlexGrid1.Col = 3: MSFlexGrid1.Text = "退勤時間"
    MSFlexGrid1.Col = 4: MSFlexGrid1.Text = "休憩時間"
    MSFlexGrid1.Col = 5: MSFlexGrid1.Text = "実労働時間"
    MSFlexGrid1.Col = 6: MSFlexGrid1.Text = "備考"
End Sub

実行してみましたら、問題なく動作しました。

それから、メモ帳でDateファイルを作りました。以下になります。
1,月,9,18,1,8,VBの勉強


31,月,9,18,1,8,VCの勉強

で、Microsoft Common Dialog Controlを追加して、ボタンを一つフォームに追加します。

Private Sub Command1_Click()
    '***** 配列の宣言 *****
    Dim num(30), x(30), y(30)
    '***** データファイル名の取得 *****
    With CommonDialog1
        .filename = ""
        .Filter = "Data(*.dat)|*.dat"
        .ShowOpen
    End With
    '**** データファイルの読み込み *****
    If CommonDialog1.filename <> "" Then
        Open CommonDialog1.filename For Input As #1
        n = 0
        Do Until EOF(1)
            n = n + 1
            Input #1, num(n), x(n), y(n)
        Loop
    Else
        MsgBox "キャンセルされました。", , "メッセージ"
    End If
    '***** データの計算と表への出力
    With MSFlexGrid1
        '***** 項目の表示 *****
        .Row = 0: . Text = "日付"
        .Col = 1: .Text = "曜日"
        .Col = 2: .Text = "出勤時間"
        .Col = 3: .Text = "退勤時間"
        .Col = 4: .Text = "休憩時間"
        .Col = 5: .Text = "実労働時間"
        .Col = 6: .Text = "備考"
        '***** 項目と計算結果の表示 *****
        For i = 1 To n
            .Row = i
            .Col = 0: .Text = 日付(i)
            .Col = 1: .Text = 曜日(i)
            .Col = 2: .Text = 出勤時間(i)
            .Col = 3: .Text = 退勤時間(i)
            .Col = 4: .Text = 休憩時間(i)
            .Col = 5: .Text = 実労働時間(i)
          .Col = 6: .Text = 備考(i)
        Next i
    End With
End Sub

質問1:
Dataファイルを読み込んでから、エラーが出ました。
「INDEX有効範囲にはありません」、Input #1, num(n), x(n), y(n)の行にエラーが出ていました。どうすればいいでしょうか。

質問2:
ほかの間違っているところもあると思いますが、MSflexGrid.textに表示したいんです。どうすればいいでしょうか。

環境はXP、VB6.0です。

ご回答をお待ちしております。


yuta  2005-05-21 00:59:54  No: 121808

はじめまして、早速ですが、質問1のヒントを。

まず、エラー発生時のnの値を確認してください。

もし、31のときは、

nの値をインクリメントする位置をInput#の後にしてみてください。
そうすれば通るはずです。


ぶぶ  2005-05-21 08:28:34  No: 121809

こんばんは。

コードの内容をデバッグしてみましょう(^-^)

>それから、メモ帳でDateファイルを作りました。以下になります。
>1,月,9,18,1,8,VBの勉強
>↓
>↓
>31,月,9,18,1,8,VCの勉強

↑読み込むデータはこういう形式なんですよね。

>Private Sub Command1_Click()
>    '***** 配列の宣言 *****
>    Dim num(30), x(30), y(30)
↑ここに読み込んだデータを格納するんですよね。
データに対して項目が少なくないですか?
あと、型を定義するようにしたほうがいいと思います
As String なのかas integerなのか・・・

〜〜〜〜〜ちょっと略〜〜〜〜〜

>    '**** データファイルの読み込み *****
>    If CommonDialog1.filename <> "" Then
>        Open CommonDialog1.filename For Input As #1
>        n = 0
>        Do Until EOF(1)
>            n = n + 1
>            Input #1, num(n), x(n), y(n)
>        Loop
>    Else
>        MsgBox "キャンセルされました。", , "メッセージ"
>    End If
↑Input ヘルプでみてみてください。作ったデータの形と読み込みの形
思ったように読み込めていますか?

    '***** データの計算と表への出力
    With MSFlexGrid1

〜〜〜〜〜ちょっと略〜〜〜〜〜

>        '***** 項目と計算結果の表示 *****
>        For i = 1 To n
>            .Row = i
>            .Col = 0: .Text = 日付(i)
>            .Col = 1: .Text = 曜日(i)
>            .Col = 2: .Text = 出勤時間(i)
>            .Col = 3: .Text = 退勤時間(i)
>            .Col = 4: .Text = 休憩時間(i)
>            .Col = 5: .Text = 実労働時間(i)
>          .Col = 6: .Text = 備考(i)
>        Next i
>    End With
>End Sub
↑最後にこの日付(i)〜実労働時間(i)がいきなり出現してきてます。
これはなんの変数ですか?

がんばってください(^-^)/


マルチ  2005-05-21 08:42:13  No: 121810

VBで勤怠プログラムを作りたいんですが…  のスレはほっときっぱなしで
http://forums.belution.com/ja/vb/000/012/21.shtml
にマルチしたり
忙しいですね・・・・


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

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






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