プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

今、ListviewでExcelシートのリストを作り、チェックボックスを使って
シートの非表示、表示をコントロールしようと考えています

しかし、選択せずにチェックボックスのチェックをした時のイベントが分からず
そのアイテムのインデックスとシート名が分かりません

選択したインデックスであれば分かるのですが

もし、方法がありましたら教えてください
以上、よろしくお願い申し上げます

A 回答 (1件)

ご質問に対して理解が出来ていませんが、



>しかし、選択せずにチェックボックスのチェックをした時のイベントが分からずそのアイテムのインデックスとシート名が分かりません

選択せずにとは、VBAなどでBooleanを設定すると言う事でしょうか?
であれば、.Checked = True は、どのように行いますか? 他のイベントから.SubItems(1)などのプロパティを拾って設定?
いずれにしても、この場合、設定できるのであれば、その時に関連情報は取得できるのではないでしょうか?

逆にユーザーが選択した時の取得方法が分かっているのであれば、出来ないでしょうか?

ユーザーが選択した時の取得方法 Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem) イベント
ざっくりとした例:

Private Sub UserForm_Initialize()
Dim i As Long
  With ListView1
   .AllowColumnReorder = True
   .Gridlines = True
   .View = lvwReport
   .CheckBoxes = True
   .ColumnHeaders.Add 1, "CHK", "", 20
   .ColumnHeaders.Add 2, "KEY", "SheetName"
  End With
  For i = 1 To 2
   With ListView1.ListItems.Add
    .Text = "" 'CHK列
    .SubItems(1) = ActiveWorkbook.Worksheets(i).Name 'KEY
   End With
  Next i
End Sub

'MsgBox表示
Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
  Dim lstitem As ListItem
  If Item.Checked = True Then MsgBox Item.SubItems(1)
  'ListViewのすべての行を対象にする場合
  '  For Each lstitem In ListView1.ListItems
  '   If lstitem.Checked = True Then
  '    MsgBox lstitem.SubItems(1)
  '
  '   End If
  '  Next
End Sub

For Each lstitem In ListView1.ListItems で
全てを調べる方法を探している?

見当違いならごめんなさい。
    • good
    • 0
この回答へのお礼

いつもありがとうございます
コードをチェックさせていただきました
思ったことが出来そうです

ご丁寧にご指導いただき、心から感謝しています
これからもよろしくお願い申し上げます

お礼日時:2020/05/29 09:24

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

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


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