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