アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります

今、UserForm上で3個のListViewを使ってプログラムを運用していますが、時々ListViewで選択されているItemを削除うしようとするとエラーになる時が有ります

下記のステートメント中の8行目で起きます
選択はマルチ選択も出来るようにしています

1. Private Sub CommandButton4_Click()
2.
3. Dim itmSet As ListItem
4. Dim i As Integer
5.
6. With ListView1
7. For i = .ListItems.Count To 1 Step -1
8. Set itmSet = .ListItems(i)
9. If itmSet.Selected = True Then
10. .ListItems.Remove itmSet.Index
11. End If
12. Next
13. End With
14.
15. ListView1.SetFocus
16.
17. End Sub

私のマシンでは出ないのでデバッグに困っています
もし、ほかに安定したやり方が有ったら教えてください

以上、よろしくお願いいたします

A 回答 (1件)

こんばんは。



最初に、質問要件としては、ListView のマルチセレクトの削除の方法で他にあるか、ということになるのではないかと思います。試しに、もっと効率的な方法を探しましたが、今の所見つかりません。
KeyとIndexを持つ連想配列のような気がしたのですが、どうも同じようにはいきません。

それで、私のいつもの十八番で、動的配列で処理してみました。
これは、切れ味の悪い答えになってしまいました。

Dim i As Integer, j As Integer
Dim ar

With ListView1
 ReDim ar(.ListItems.Count - 1)
 For i = 1 To .ListItems.Count
  If .ListItems.Item(i).Selected Then
  ar(j) = i
  j = j + 1
  End If
 Next
 ReDim Preserve ar(j - 1)
 For i = UBound(ar) To 0 Step -1
  .ListItems.Remove ar(i)
 Next
End With

'//

なお、ListView 自体は、Excel 2003 で直接のサポートは終わっていたような気がします。Office の2007以上で標準でインストールしたら、ファイルが見つからないはずです。急遽、前のPCのバックアップから、MSSTKPRP.DLLをコピーして入れました。(他の方で試される方は、一考をお願いします)
    • good
    • 0
この回答へのお礼

いうもありがとうございます
こちらの方が安定感が有りそうなので使わせて頂きます

Excel2013ですが、ツールボックスに有ったので今回初めて使ってみました
良いものが出来ました
本当にありがとうございました
これからもよろしくお願いいたします

お礼日時:2018/05/24 13:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A