[リストへもどる]
一括表示

投稿時間:2004/08/10(Tue) 21:00
投稿者名:Ichiro
Eメール:
URL :
タイトル:
MSFlexGridの行をまとめて削除したい
MSFlexGridのRemoveItemメソッドで複数行をまとめて削除したいのですが、うまくいきません。
環境はWindowsXPとVB6SP6です。

以下の例で、フォーム上にMSFlexGridとCommand1、Command2の2つのボタンを用意します。

Command1ボタンをクリックするとMSFlexGridに10行を追加します。
Command2ボタンをクリックすればその10行を削除できるはずなのですが
なぜか2,4,6,8行が削除されず「その行はグリッドには含まれていません」というエラーになります。
デバッグモードで見ると変数i=7で止まっています。

何がいけないのでしょうか。ご指導お願いします。

Private Sub Command1_Click()

Dim i As Integer
With MSFlexGrid1
      .Rows = 1
      .Cols = 1
   For i = 1 To 10
      .AddItem i
   Next i
End With

End Sub

Private Sub Command2_Click()

Dim i As Integer
With MSFlexGrid1
   For i = 1 To 10
      .RemoveItem i
   Next i
End With

End Sub

投稿時間:2004/08/10(Tue) 21:50
投稿者名:ken
Eメール:
URL :
タイトル:
Re: MSFlexGridの行をまとめて削除したい
削除したんだから当然行数は減りますよね?

まず10行追加した段階では
行1
行2
行3
行4



行10
となります。

ここから1行目を削除すると
行2
行3
行4



行10
になります。

For文で削除する行番号を加算しているので次は2行目を削除するということになり
行2
行4



行10
となりますよね。

投稿時間:2004/08/10(Tue) 22:49
投稿者名:Ichiro
Eメール:
URL :
タイトル:
Re^2: MSFlexGridの行をまとめて削除したい
kenさん、ご指摘有難うございます。
何かとんでもない勘違いをしていました。赤面です(-_-;)

Command2を以下のようにして解決しました。
どうも有難うございました。

Private Sub Command2_Click()
Dim i As Integer
i = 10
With MSFlexGrid1

 Do While i > 0
      .RemoveItem 1
      i = i - 1
 Loop
End With
End Sub