|
▼めがねチャン さん:
こんにちは
>このような入力画面があります。
>Bの列に Bの列の入力履歴を リストとして設定しました。
入力画面と履歴が同じというのがわかりにくいのですが
B列の下に入力していく・・・という事と読み替えて
必要なのはA列と同じ項目の重複しないリストなので
Dictionaryオブジェクトを使って全てリストアップする必要も
無いと思いますので、一致した項目のリストを作成するように
サンプルを作ってみました。
結構、変更を加えてしまっているので
まずはサンプルを解読してみてください。
Public Function GetSummary(RR As Range) As String
Dim strKey As String
Dim K As String
Dim V As Variant
Dim i As Long
strKey = RR.Offset(, -1).Value
V = Me.Range(Me.Range("A1"), RR.Offset(-1)).Value
For i = 1 To UBound(V)
If V(i, 1) = strKey And Not K Like "*" & V(i, 2) & "*" Then
K = K & "," & V(i, 2)
End If
Next i
GetSummary = Mid$(K, 2)
End Function
'****************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myList As String
If Target.Column = 2 Then
If Target.Offset(, -1).Value = "" Then Exit Sub
myList = GetSummary(Target)
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=myList
.ShowError = False
End With
End If
End Sub
|
|