| 
    
     |  | いつも、お世話になります。 はじめて、ユーザーフォームを作ってみたのですが、うまくいきません。
 1つのリストボックスと2つのコマンドボタンだけの単純なものです。
 
 入力し易くするため、あらかじめRANGEを選択していたとき、イベントが発生しないようなんですが、どうすれば発生させることが出来るでしょうか?
 
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Count = 1 And Target.Row > 16 Then
 If Target.Column = 6 Then
 MsgBox ("OK")
 For Each C In Worksheets("現場名").Range("C5:C304")
 If C.Value = ActiveCell.Offset(0, -1).Value Then
 現場名フォーム.Show
 End If
 Next C
 End If
 End If
 End Sub
 RANGEをあらかじめ、選択していないときはイベントは発生します。
 
 次の質問は、フォームが表示されたあとの処理です。
 
 Private Sub UserForm_Initialize()
 Dim i As Long
 With Worksheets("現場名")
 For i = 5 To 304
 If .Cells(i, 3).Value = ActiveCell(0, -1).Value Then
 現場名リスト.AddItem .Cells(i, 4).Value
 End If
 Next i
 End With
 If 現場名リスト.ListCount = 0 Then  '該当するデータがない場合
 MsgBox ("???")
 End If
 End Sub
 MsgBox ("???")は表示されないのですが、リストにデータが表示されません。
 どこが、まずいのでしょうか?
 
 Private Sub 現場名リスト_Click()
 With 現場名リスト
 ActiveCell(0, -1).Value = .List(.ListIndex, 0)
 End With
 Unload 現場名フォーム
 End Sub
 上は実行していません。
 
 Private Sub 現場名入力_Click()
 Unload 現場名フォーム
 Call 現場名の入力
 End Sub
 上は、動作します。
 
 Private Sub 閉じる_Click()
 Unload 現場名フォーム
 End Sub
 1回で閉じず、2ないし3回目のクリックで閉じるのはなぜなんでしょうか?
 
 以上、よろしくお願いします。
 
 |  |