こんにちわ。
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です。
ご回答をお待ちしております。
はじめまして、早速ですが、質問1のヒントを。
まず、エラー発生時のnの値を確認してください。
もし、31のときは、
nの値をインクリメントする位置をInput#の後にしてみてください。
そうすれば通るはずです。
こんばんは。
コードの内容をデバッグしてみましょう(^-^)
>それから、メモ帳で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)がいきなり出現してきてます。
これはなんの変数ですか?
がんばってください(^-^)/
VBで勤怠プログラムを作りたいんですが… のスレはほっときっぱなしで
http://forums.belution.com/ja/vb/000/012/21.shtml
にマルチしたり
忙しいですね・・・・
ツイート | ![]() |