2016-10-28 1 views
0

사용자가 ActiveX ListBox (ListBoxTest1)에서 여러 옵션을 선택한 다음 다른 시트의 별도 행에 선택 사항을 저장하게하려고합니다. 여기에 표시된 첫 번째 줄이 실행될 때 "워크 시트 클래스의 ListBoxes 속성을 가져올 수 없습니다"오류가 계속 발생합니다. Excel VBA를 사용하여 ListBox에서 여러 사용자 입력 저장

Set listX = Sheets("Availability Criteria").ListBoxes("ListBoxTest1") 

With listX 
    For i = 1 To .ListCount 
     If .Selected(i) Then 
      Sheets("WorkingSheet").Cells(i + 4, "F").Value = .Items(i) 
     End If 
    Next i 
End With 

은 내가 .Items 속성이 나는 목록 상자에서 입력을 위해 필요한 무엇이라고 생각하지만, 아마 그 문제의 불법 재산입니다. 모든 코드는 private 섹션이 아닌 modules 섹션에 있습니다.

저는 여전히 Excel의 VBA에 새로운 있습니다 .... 제발 도와주세요.

답변

0

Worksheet 실제로는 ListBoxes 속성이없고 Sheets("Availability Criteria")은 강력한 형식의 Worksheet을 반환합니다. 컬렉션에 액세스 할 수 아마도 가장 간단한 방법은 후반 바인드 Worksheet이다 :

Dim sh As Object 
Set sh = Sheets("Availability Criteria") 
Set listX = sh.ListBoxes("ListBoxTest1") 

편집

위의 코드는 폼 컨트롤에 적용됩니다. ActiveX 컨트롤의 경우 OLEObjects 컬렉션을 통해 액세스해야합니다.

Dim listX As MSForms.ListBox 
Set listX = Sheets("Availability Criteria").OLEObjects("ListBoxTest1").Object 

With listX 
    For i = 1 To .ListCount 
     If .Selected(i) Then 
      Sheets("WorkingSheet").Cells(i + 4, "F").Value = .List(i) 
     End If 
    Next i 
End With 
+0

hm. 이 질문을 붙여 넣은 코드 위의 넣어 및 "Worksheet 클래스의 ListBoxes 속성을 가져올 수 없습니다 전에 같은 런타임 오류가 여전히 가져옵니다." 이 코드는 워크 시트의 비공개 하위에 놓아야합니까? – Fahvs

+0

잘못된 ListBox 이름이 있습니다 (테스트 코드의 이름을 사용하고있었습니다). 워크 시트의 모듈에서이 작업을 실행했습니다. 목록 상자 희미한 쉬으로 객체 설정 SH = 시트 ("가용성 기준") 설정 listX = sh.ListBoxes으로 희미한 lstX (: 나는 그것을 테스트 할 때 – Comintern

+0

나는 원래 – Fahvs

관련 문제