2014-09-02 4 views
1

사용자가 새로운 시트의 텍스트를 만들 시트를 선택하길 원합니다. 그러나 그가 선택할 수있는 시트 수는 시간이 지남에 따라 다를 수 있으며 시트의 이름을 하드 코드하고 싶지 않습니다. 내 체크 박스를 넣어 빈 프레임과 사용자 정의 폼을 생성하고 코드의이 비트를 추가매개 변수에 따라 userform의 체크 박스 생성하기

o 01.2013 
o 07.2013 
o 01.2014 
o 07.2014 

: 여기

은 예입니다 내가해야 할 목표로 무엇 ("O"는 체크 박스를 나타냅니다) userform :

Private Tck(10) As MSForms.CheckBox 

Private Sub UserForm_Initialize() 

Dim ws As Worksheet 
Dim i As Long 

i = 1 

For Each ws In ActiveWorkbook.Worksheets 
    If Left(ws.Name, 3) = "T2M" Then 
     Set Tck(i) = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) 
     Tck(i).Caption = Right(ws.Name, 7) 
     i=i+1 
    End If 
Next 

End Sub 

그러나 if 테스트의 유효성을 검사하는 마지막 시트와 함께 하나의 확인란 만 추가합니다.

두 반복 사이에 오프셋을 만들려고 시도했지만 의 위치를 ​​수정할 수 없습니다 (예 : Tck(i).top).

나는 또한이 질문의 대답에서 방법을 시도했다 : Adding controls to a frame in an Excel userform with VBA 그러나 그것은 또한 작동하지 않는다.

답변

2

확인란이 있습니다. 서로 겹쳐서 표시되므로 확인란을 볼 수 없습니다. '최고'값을 변경하면 올바른 아이디어를 얻을 수 있습니다.

Public Sub addCheckboxes() 
    Dim ws As Worksheet 
    Dim i As Integer 
    Dim tck As MSForms.CheckBox 
    Dim offset As Integer: offset = 5 

    For i = 1 To Worksheets.Count 
     Set ws = Worksheets(i) 
     Set tck = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i, True) 
     tck.Top = offset 

     offset = offset + 15 

    Next i 
End Sub 
+1

완벽하게 작동합니다! 감사 – Tom

관련 문제