[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストボックスの選択状態解除』(てつ)
リストボックスの値をクリックした後、 一番上の値では、選択状態が解除されるのですが、 二番目以降では、選択状態が解除されず、同じ値を 続けてクリックできません。 すべての値で、クリック後、選択状態を解除するには どうしたらよいでしょうか。
リストボックスのマクロ Private Sub ListBox1_Click() Dim シート名 Dim シート名1 Dim 現ブック名 Dim i 現ブック名 = ActiveWorkbook.Name On Error Resume Next If Workbooks(現ブック名).Worksheets(ListBox1.Text).Visible = False Then シート名 = ListBox1.Text シート名1 = Replace(シート名, " (非表示)", "") Worksheets(シート名1).Visible = True Sheets(シート名1).Select Else シート名 = ListBox1.Text Workbooks(現ブック名).Worksheets(ListBox1.Text).Visible = False End If On Error GoTo 0 MsgBox ListBox1.Text 'これがあると、同じリストをクリックできる 他の方法は??? Application.ScreenUpdating = True With ListBox1 .Clear End With For i = 1 To Worksheets.Count 'リスト更新 If Worksheets(i).Visible = True Then ListBox1.AddItem Worksheets(i).Name Else ListBox1.AddItem Worksheets(i).Name & " (非表示)" End If Next 'ListBox1.ListIndex = -1 '入れても変わらない End Sub
Private Sub UserForm_Initialize() Dim i For i = 1 To Worksheets.Count If Worksheets(i).Visible = True Then ListBox1.AddItem Worksheets(i).Name Else ListBox1.AddItem Worksheets(i).Name & " (非表示)" End If Next End Sub
< 使用 Excel:Excel2013、使用 OS:Windows10 >
さっそく、ありがとうございます。 確かに、 検証しているなかで、そのような状況が見られました。 どのようにしたら、よいのでしょか? Application.EnableEvents = False Application.EnableEvents = true を最初と最後に入れてみたのですが、うまくいきません。 (てつ) 2017/06/17(土) 18:21
Option Explicit
Private Sub UserForm_Initialize() Dim i As Long
With ListBox1 .ColumnCount = 2 For i = 1 To Worksheets.Count .AddItem "" .List(.ListCount - 1, 0) = Worksheets(i).Name If Worksheets(i).Visible Then .List(.ListCount - 1, 1) = "(表示)" Else .List(.ListCount - 1, 1) = "(非表示)" End If Next End With
End Sub
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim i As Long Dim シート名 As String
i = ListBox1.ListIndex
If i = -1 Then Exit Sub
シート名 = ListBox1.List(i, 0)
If ListBox1.List(i, 1) = "(表示)" Then On Error Resume Next Worksheets(シート名).Visible = False On Error GoTo 0 If Worksheets(シート名).Visible = False Then ListBox1.List(i, 1) = "(非表示)" End If Else Worksheets(シート名).Visible = True ListBox1.List(i, 1) = "(表示)" End If
End Sub
(マナ) 2017/06/17(土) 22:38
マナさん ありがとうございます。
MouseDownでは、試してみたところ タイミングによって、Wクリックしたときや クリックなど、何回かして 表示、非表示が替わるようです。 その後は、再度同じ個所をクリックすることは できるようになります。
Clickでは、クリックしたときに 表示、非表示が切り替わります。 ただ、今のところ、一番上以外は、 同じ個所をクリックできません。
また、選択状態の解除もできるようになれば いいなと思っています。
よろしくお願いいたします。
(てつ) 2017/06/18(日) 08:22
Sub 選択解除() UserForm1.ListBox1.ListIndex = -1 End Sub
Private Sub ListBox1_Click() Dim i As Long Dim シート名 As String
Application.OnTime Now(), "選択解除"
i = ListBox1.ListIndex If i = -1 Then Exit Sub シート名 = ListBox1.List(i, 0) If ListBox1.List(i, 1) = "(表示)" Then On Error Resume Next Worksheets(シート名).Visible = False On Error GoTo 0 If Worksheets(シート名).Visible = False Then ListBox1.List(i, 1) = "(非表示)" End If Else Worksheets(シート名).Visible = True ListBox1.List(i, 1) = "(表示)" End If
End Sub
(マナ) 2017/06/18(日) 10:17
マナさん ありがとうございます。 Application.OnTime Now(), "選択解除" については、 こういう使い方ができると、初めて知りました。 また、ColumnCountを二つにして 2番目の列に(表示)(非表示) を示すことによって 目的の動作が思うようになされていました。
これで、選択状態を解除し、続けて同じ値を クリックすることができるようになりました。 これから活用していきたいと思います。
ありがとうございました。
(てつ) 2017/06/18(日) 13:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.