运行宏动态#次

时间:2014-03-03 20:28:50

标签: excel-vba dynamic listbox listboxitem imacros

我有一个用户表单,用户可以在文本字段中输入值,这些值将放入列表框中,列表框始终是动态的条目数。当他们选择“完成”时,如何让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 

1 个答案:

答案 0 :(得分: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

将处理该列表框中的所有条目。

如果您想知道如何填充它:

如果你有1个文本框,用户输入多个逗号分隔属性,如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

如果你有多个文本框,你只需循环遍历表单上的控件,检查typename并添加值,如果它们不为空。像:

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