投稿日 | : 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 テーブル名;