[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストボックスの選択状態解除』(てつ)
リストボックスの値をクリックした後、 一番上の値では、選択状態が解除されるのですが、 二番目以降では、選択状態が解除されず、同じ値を 続けてクリックできません。 すべての値で、クリック後、選択状態を解除するには どうしたらよいでしょうか。
リストボックスのマクロ
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.