VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/05/05(Wed) 20:05
投稿者nobu
Eメール
URL
タイトルRe: MSFlexGirdの保存について

提示コードに近い形で書くと以下の様では如何ですか?
表示用のファイルを"C:\Seiseki.csv"としてあり
中身は下記です。
氏名,国語,算数,理科,社会
A君,85,89,54,65
B君,98,95,85,70
Cさん,45,35,55,75
Dさん,65,75,75,55
E君,30,20,15,10


保存後のファイルは "C:\Seiseki_2.csv" としてあります。

なお name はVBでの予約語ですので使用不可と思います。

Option Explicit

    Dim lngCountI As Long       'ループのカウンタ
    Dim FileNo As Integer
    Dim name_      As String     '名前
    Dim kokugo    As Single     '国語の点数
    Dim sansuu    As Single     '算数の点数
    Dim rika      As Single     '理科の点数
    Dim syakai    As Single

    Dim kokugo_    As String '科目名
    Dim sansuu_    As String
    Dim rika_      As String
    Dim syakai_    As String
    Dim i As Integer          '行

Private Sub Form_Load()
'表示する為にファイルを読み込み、表示する

    FileNo = FreeFile
    i = 0
    Open "C:\Seiseki.csv" For Input As #FileNo
    
With MSFlexGrid1
'見出しは文字型変数なので別扱い    
    Input #FileNo, name_
    Input #FileNo, kokugo_
    Input #FileNo, sansuu_
    Input #FileNo, rika_
    Input #FileNo, syakai_
    
    .Row = i
    .Col = 0: .Text = name_
    .Col = 1: .Text = kokugo_
    .Col = 2: .Text = sansuu_
    .Col = 3: .Text = rika_
    .Col = 4: .Text = syakai_

'ここからはデータ部    
'kokugo 等は数値としての扱いなので
'見出し部とは別扱いとしてある

    Do
    Input #FileNo, name_
    Input #FileNo, kokugo
    Input #FileNo, sansuu
    Input #FileNo, rika
    Input #FileNo, syakai
    
    i = i + 1
    .Row = i
    .Col = 0: .Text = name_
    .Col = 1: .Text = kokugo
    .Col = 2: .Text = sansuu
    .Col = 3: .Text = rika
    .Col = 4: .Text = syakai

    Loop Until EOF(FileNo)
    Close #FileNo

End With

End Sub


Private Sub Command3_Click()

With MSFlexGrid1
            
    FileNo = FreeFile
    Open "C:\Seiseki_2.csv" For Output As #FileNo

'見出しは文字型変数なので別扱い    
            .Row = 0
            .Col = 0
            name_ = .Text
            .Col = 1
            kokugo_ = .Text
            .Col = 2
            sansuu_ = .Text
            .Col = 3
            rika_ = .Text
            .Col = 4
            syakai_ = .Text
            
'見出し部を保存    
            Write #FileNo, name_, kokugo_, sansuu_, rika_, syakai_


'ここからはデータ部    
'kokugo 等は数値としての扱いなので
'見出し部とは別扱いとしてある
    
        For lngCountI = 1 To .Rows - 1
    
            .Row = lngCountI
            .Col = 0
            name_ = .Text
            .Col = 1
            kokugo = .Text
            .Col = 2
            sansuu = .Text
            .Col = 3
            rika = .Text
            .Col = 4
            syakai = .Text
            
'データ部を1行毎に保存    
            Write #FileNo, name_, kokugo, sansuu, rika, syakai

    Next lngCountI
    Close #FileNo
End With
End Sub

---------------
Private Sub Command3_Click() の中で

With MSFlexGrid1
            .Row = 0
            .Col = 0
            .Text = name_
            .Col = 1
            .Text = kokugo_

などとなっていますが、ここは何をする積もりですか?
            .Text = name_ では name_ を表示しようと言う
意図かも知れませんが name_ にはまだ文字列がセットされていませんよ、
コードを順を追って何をしているのか、どう言う結果になるのかを
考えてください。

下記に先日書いた「フローチャート」に付いての記事があります。
これは自分の目的とする処理を実行する為の手順書です。
ある処理をする為には手順が必要です。
計算等をして答えを求めるには公式や手順が必要です。
アルゴリズムと言う語句に付いても調べて下さい。
闇雲にコードを書いても求める結果は出て来ません。
VBのコードの書き方だけが分かっていてもダメです。
手順に従った適切なコーディングが必要になります。

http://www005.upp.so-net.ne.jp/h-masuda/ProText/Flow/index.html

各項目毎に変数名を変えないで読み込み、表示、保存する
方法もありますが基本的には変わらないので
まずは1方法を確実に理解してください。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -