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

投稿日: 2005/05/17(Tue) 16:04
投稿者GOD
Eメール
URL
タイトルRe^4: ループ処理

Do 〜 LoopよりはFor分の方がよくないかな。
    Dim Row As Long
    Dim Col As Long
    Dim varWidth As Variant

    '趣味列の幅指定
    varWidth = Array(1000, 1000, 1000, 1000, 1000)
    With MSHFlexGrid1
        '趣味1は7から始まる
        For Col = 7 To .Cols - 1
            '必要行数分ループ
            For Row = .FixedRows To .Rows - 1
                If Len(Trim(.TextMatrix(Row, Col))) <> 0 Then
                    '何か入力されているならFor分(Row)を抜ける
                    Exit For
                End If
            Next
            '何か入力されていたか?
            If Row >= .Rows Then
                .ColWidth(Col) = 0
            Else
                .ColWidth(Col) = varWidth(Col - 7)
            End If
        Next
    End With

もっとスマートにやるならSQL文で趣味1〜趣味5までの文字列の最大幅を持ってきてしまうとか。
コーディングの行数は減りそうだけど処理速度としてはどうか・・・
SELECT max(len(trim(趣味1))),
       max(len(trim(趣味2))),
       max(len(trim(趣味3))),
       max(len(trim(趣味4))),
       max(len(trim(趣味5)))
FROM テーブル名;


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

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

- VBレスキュー(花ちゃん) - - Web Forum -