下面的一系列示例讲解了如何在下拉列表中选择多个条目,并演示了不同的情形。
1.如下图所示的工作表,通过在下拉列表中多次选择,将选择的条目依次输入当前单元格。
在工作表代码模块中输入代码:
说明:
代码的关键是存储已选择过的条目,然后将已选条目和当前选择的条目组合,并将最终的结果输入到当前单元格。
将Target.Value= strOldVal & ', ' & strNewVal换成Target.Value= strOldVal & Chr(10) & strNewVal,得到下面的效果:
2.下面的示例实现当用户选择下拉列表中的条目时,会依次在该单元格右侧单元格中输入所选条目值,如下图所示。
在工作表代码模块中输入代码:
说明:
代码的关键是获取下拉列表单元格右侧单元格的位置,并输入值。
3.下面的示例与上面相似,只是在数据有效性单元格相邻列的单元格中依次输入选择的条目内容,如下图所示。
代码如下:
4.下面的示例实现在下拉列表中多项选择时,不能选择已经选过的条目。
工作表代码模块中的代码如下:
5.下面的示例实现在下拉列表中选择多个条目时,已选条目不在出现在下拉列表中,如下图所示。
工作表代码模块中的代码与上文第1个示例的代码相同,代码如下:
但是,在工作表中要进行一些设置。
首先,定义单元格区域H2:H10的名称为“剩余科目”,引用位置使用了公式,以定义动态名称。
然后,选择单元格区域C2:C5,设置数据有效性:
在单元格G2中输入公式:
=IF(COUNTIF($C$2:$C$5,'*'& F2 & '*'),'',ROW())
下拉至单元格G10。
该公式查找列F中的单元格是否已在单元格区域C2:C5中,如果已存在则输入空,否则输入行号。
在单元格H中输入数组公式:
=IF(ROW(F2)-ROW(F$2) 1>COUNT(G$2:G$10),'',INDEX(F:F,SMALL(G$2:G$10,1 ROW(F2)-ROW(F$2))))
下拉至单元格H10。
该公式列出了除去已输入单元格区域C2:C5中的值后剩下的值。
至此,工作表设置完成。当在工作表单元格区域C2:C5中的下拉列表中选取值后,已选取的值不会出现在下拉列表中。
查看相关文章请点击下面的标题:
本文属原创文章,转载请联系我(xhdsxfjy@163.com)或者注明出处。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
联系客服