VB6.0 SPREAD3.0jをつかっているんですが、
行のセルが全て空白の時に、その行を削除したいんですが、
うまくいきません。なぜか空白でも残ってします行があります。
ロジックは
chkFlg = False 'False=データなし(削除可) で初期化
For i = 1 To spread1.MaxRows
spread1.GetText 1, i, text
If text = "" Then
For j = 1 To spread1.MaxCols
spread1.GetText j + 1, i, text
If text <> "" Then
chkFlg = True
Exit For
End If
Next J
If chkFlg = False Then
With spread1
.Row = i
.Row2 = i
.BlockMode = True
.Action = ActionDeleteRow
.BlockMode = False
End With
End If
chkFlg = False
End If
Next I
と組んでいます。
ちなみにスプレットの行数、列数はデータの数により可変。
スペースはセルに入らないようになっています。
ロジックに問題はないように思うのですが、
何か気づかれた方いらしたらお願いします。
プログラムをステップ実行しながらどういった処理が
起こってるか確かめて下さい。多分、削除した時点で
削除行以降の行が上詰めされてズレてるんじゃないかな?
ループを逆に下(spread1.MaxRows)から回すか削除行を
考慮に入れて判定すればできると思います。
[考慮に入れる例]
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080040.txt
まるるうさんありがとうございました。
maxrowsからまわして解決でしました。
ツイート | ![]() |