2014-10-17 3 views
-1

Am 새가 stackoverflow에 있습니다. 직장에서 VBA를 사용하고 있으며 작업을 완료하는 데 문제가 있습니다. 나는 combobox를 사용하여 엑셀 시트에서 콤보 박스를 선택하고 콤보 박스에 컬럼의 데이터를 공급하는 매크로를 만든다. 만약 내가 2 매크로 (1. 만들기 빗 2. 데이터 피드) 잘 작동합니다. 만약 내가 그들을 하나로 묶으려고 노력하지 않는다. 콤보 박스를 찾을 수 없습니다. 문제는 라인입니다 : Sheet1.ComboBox1.AddItem 값 여기 내 코드입니다. 이 컴파일시에 존재하지 않기 때문에 당신은 Sheet1의 클래스의 구성원으로 콤보를 참조 할 수 없습니다콤보 박스를 Excel에 작성하여 필터링하십시오.

Global mycellCl As String 
Sub CreateComboBox1() 
'first part 
Lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 

With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _ 
       Link:=False, DisplayAsIcon:=False, Left:=250, Top:=10, Width:=100, _ 
       Height:=20) 
End With 
myvalue = "" 
'end sub 
'2nd part works fine as 2nd macro FeedData() 
Dim Lrow As Long, test As New Collection 
Dim Value As Variant, temp() As Variant 
ReDim temp(0) 

mycellCl = Mid(Application.ActiveCell.Address, 2, 1) 
'Lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 

On Error Resume Next 
temp = Sheet1.Range(mycellCl & "2:" & mycellCl & Lastrow).Value 
For Each Value In temp 
    If Len(Value) > 0 Then test.Add Value, CStr(Value) 
Next Value 
If Sheet1.Shapes.Count > 0 Then 
For Each Value In test 
    Sheet1.ComboBox1.AddItem Value 
Next Value 
End If 
On Error GoTo 0 
Set test = Nothing 
End Sub 

답변

0

를 제공 할 수있는 모든 도움을 주셔서 감사합니다. 간단한 해결책은 추가 한 콤보 상자에 대한 참조를 저장하고 해당 변수를 사용하는 것입니다.

Sub CreateComboBox1() 
    Dim cbo     As Object 
    'first part 
    Lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 

    Set cbo = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _ 
             Link:=False, DisplayAsIcon:=False, Left:=250, Top:=10, Width:=100, _ 
             Height:=20).Object 
    myvalue = "" 
    'end sub 
    '2nd part works fine as 2nd macro FeedData() 
    Dim Lrow As Long, test As New Collection 
    Dim Value As Variant, temp() As Variant 
    ReDim temp(0) 

    mycellCl = Mid(Application.ActiveCell.Address, 2, 1) 
    'Lastrow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 

    On Error Resume Next 
    temp = Sheet1.Range(mycellCl & "2:" & mycellCl & Lastrow).Value 
    For Each Value In temp 
     If Len(Value) > 0 Then test.Add Value, CStr(Value) 
    Next Value 
    If Sheet1.Shapes.Count > 0 Then 
     For Each Value In test 
      cbo.AddItem Value 
     Next Value 
    End If 
    On Error GoTo 0 
    Set test = Nothing 
End Sub 
+0

고마워요. 당신이 무슨 말을하는지 레퍼런스를 말할 때. 나는 vda에 새로운 ... –

+0

나는 내가 게시 한 버전의'cbo' 변수를 의미합니다. – Rory

+0

감사합니다 전화에서 코드를 볼 수 어렵습니다 scrren !! 잘 작동합니다. –

관련 문제