|
いつも、お世話になります。
はじめて、ユーザーフォームを作ってみたのですが、うまくいきません。
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回目のクリックで閉じるのはなぜなんでしょうか?
以上、よろしくお願いします。
|
|