2014-03-03 2 views
0

사용자가 텍스트 상자에 입력 할 수있는 값을 입력 할 수있는 사용자 양식이 있습니다.이 양식은 항상 동적 항목 수입니다. 그들이 "완료"를 선택할 때 VBA가 각 라인을 개별적으로 인식하게하려면 어떻게해야합니까?동적 매크로 실행 #

그들은 속성 이름을 입력하고 있으며 템플릿 x 횟수만큼 복사하고 각 값을 입력 한 값으로 바꿔주는 코드가 있습니다.

내가 말하려고했다 :

Dim cellNumber As Integer 
Dim property As ListBox.Items 

cellNumber = 11 
For Each property In ListBox1 
    Range("B" & cellNumber).Value = property 

    'copying template and renaming it 
    Sheets("Template").Copy After:=Sheets("Template") 
    ActiveSheet.Name = property 
+0

은 사용자가 돌아 오는 '항목'입니다. 즉, 개행 문자로 구분 된 목록입니까? – Brad

+0

그래서, 하나의 텍스트 상자이고, 사용자는 쉼표로 구분 된 항목을 입력합니다. prop1, prop2, prop3, prop4 등 ... 또는 여러 개의 텍스트 상자와 각 텍스트 상자에 값이있을 수도 있고 없을 수도 있습니다. – user1759942

+0

오 목록 상자에 알 수없는 양의 항목이 있고 그 안에있는 각 항목을 반복하는 코드가 필요합니까? – user1759942

답변

0

이 시도 : 그 목록 상자에서 모든 항목을 처리 할

Dim cellNumber As Integer 
Dim property As string 


cellNumber = 11 
For i = 0 to listbox1.listcount - 1 '-1 because the .list starts at 0 
    property = listbox1.list(i) 
    Range("B" & cellNumber).Value = property 

'copying template and renaming it 
    Sheets("Template").Copy After:=Sheets("Template") 
    ActiveSheet.Name = property 
next 

.

을 사용하면 사용자가 등 prop1, prop2, prop3처럼, 다수의 쉼표로 구분 속성을 입력 한 텍스트 상자가 있다면 .. 다음

을 사용하십시오 :

당신은 그것을 채우는 방법을 궁금해하는 경우

dim values as variant 
values = split(txtbox.text, ",") ' where you can use any delimiter 
는 당신이 할 것 :

dim val as string 
for each val in values 
    listbox1.add(val) 
next 

여러 텍스트 상자 당신에게 양식의 컨트롤 만약 그들이 유형 이름을 확인하고 값을 추가를 통해 간단하게 루프가있는 경우 비어 있지 않습니다. like :

dim ctrl as control 
for each ctrl in form.controls 
    if typename ctrl = "Textbox" then 
     if not ctrl.text= "" then 
      listbox1.add(ctrl.text) 
     end if 
    end if 
next