关于将VBA表单中的复选框,广播和下拉值插入Excel电子表格,我有一个多方面的问题。我正试图在我的代码中考虑几个案例场景。
我要插入的第一组项目是复选框,其中包含以下名称/值:
Name Value
========== =====
chk_week1 1
chk_week2 2
chk_week3 3
chk_week4 4
chk_week5 5
chk_week6 6
chk_week7 7
chk_week8 8
chk_week9 9
chk_week10 10
chk_week11 11
chk_week12 12
chk_week13 13
chk_week14 14
chk_week15 15
如果用户选中了多个复选框,则应将其插入1,2,4,5
格式 - 例如,如果用户选择chk_week1, chk_week2, chk_week4 and chk_week5
。
我要插入的第二组项目是来自广播组的单个选择,其中包含fr_Priority
帧内的跟随名称/值:
Name Value
========== =====
priority_y Yes
priority_n No
因此,如果用户选择priority_y
,则会在Excel电子表格中插入Yes
。
我要插入的第三组项目来自三个下拉菜单。这非常简单,但用户需要在所有三个下拉列表中进行选择。如果他们对偏好不感兴趣,则选择'No Preference'
。如果用户做出此决定,则不应将任何内容插入到单元格中。存在以下名称/值:
Name
==========
cbo_fac1
cbo_fac2
cbo_fac3
例如,如果用户在 cbo_fac1 , cbo_fac2 , cbo_fac3 中选择了111,222,No Preference
,那么只有{{1}插入。如果选择111,222
,则仅插入111,No Preference,No Preference
。
这是我现在正在使用的代码:
111
提前非常感谢!
答案 0 :(得分:1)
关于你究竟遇到什么问题的一些说明会帮助我给你一个更好的答案。它听起来像是你试图填充一个未知大小的范围,因为用户可以在第一组中选择多达15个项目,在第二组中选择1个,在第三组中最多选择三个。所以,我首先要制作一些数组来保存用户选择的项目,如...
Dim group1 as arraylist
Dim group2 as arraylist
Dim group3 as arraylist
' Go through checkboxes and add values if they are checked
if checkbox1.checked = true then
group1.add(1)
end if ' do that for each checkbox or if you have a checklistbox do
for each thing in checklistbox1
if thing.checked=true then
group1.add(checklistbox1.indexof(thing)-1)
end if
next
对第2组和第3组执行相同类型的操作
if not dropdown1.selecteditem = "no preference" then
group3.add(...)
end if ' so an and so forth
现在,您可以将group1,group2和group3添加到工作表中,如
Dim StartingRange as range = ws.Cells(Rows.Count, "a").End(xlUp)
Dim total_items as integer = (group1.items.count + group2.items.count + group3.items.count)
我不知道你想在行或列中添加项目的方式,但你可以通过...来确定起始范围的大小。
startrange.resize(totalitems, 1) ' resizes range to 1 column and total items in rows
然后
Dim cell as variant
for each cell in startrange
cell.value = group1.item(0)
group1.removeat(0) ' this effectively moves the item at index 1, to index 0
next
为其他小组做
如果这没有帮助,请告诉我。我的VBA有点生疏,所以我可能错过了代码中的一些内容,比如'Set'范围等,所以我为此道歉。