2014-02-18 2 views
1

시트 "OR"에 나열된 항목으로 채울 Excel 양식의 드롭 다운이 있습니다. 그러나이 동적 목록의 유일한 항목 만 필요합니다. & 다음 드롭 다운을 채 웁니다.VBA로 Excel 양식의 동적 드롭 다운 채우기

많은 블로그를 검색하여 Rowsource 속성으로 명명 된 범위를 제안했지만 내 목록에 중복 된 항목이 있습니다 &은 동적입니다.

답변

1

당신은이 코드를 작성할 수 있습니다 A10와 D1의 콤보 :

Dim s As String, r As Integer, nr As Integer, wr, v 
Set wr = Range("A1:A10") 
nr = wr.Rows.Count 
For r = 1 To nr 
v = wr(r, 1) 
If InStr(s, v & ",") = 0 Then 
    s = s & v & "," 
End If 
Next 
s = Left(s, Len(s) - 1) 
With Range("D1").Validation 
    .Delete 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=s 
End With 

이 데이터 유효성 검사를 사용을, 나는 데이터가 A1에 가정합니다. 콤보 상자는 A1이 포함됩니다 : A10 고유 값

을 당신이 콤보 ActiveX 객체이 시도 선호하는 경우 :

Dim s As String, r As Integer, nr As Integer, wr, v 
Set wr = Range("A1:A10") 
nr = wr.Rows.Count 
With ComboBox1 
    .Clear 
    For r = 1 To nr 
    v = wr(r, 1) 
    If InStr(s, v & ",") = 0 Then 
    s = s & v & "," 
    .AddItem (v) 
    End If 
    Next 
End With 
+0

덕분에 친구를 ... 그러나 지정된 범위는 엑셀 및 액티브 X 콤보의 다른 시트에 나타납니다 다른 시트. 적절하게 활성화하는 방법은 무엇입니까? 도와주세요. –

+0

범위와 콤보 앞에있는 시트를 참조하십시오 (wr = sheet1.range ("A1 : A10") 및 sheet1.ComboBox1을 설정). – CRondao

+0

감사합니다. 그것은 운동했습니다. –