关于Excel组合框控件的问题
发布网友
发布时间:2022-04-23 02:04
我来回答
共3个回答
热心网友
时间:2023-06-23 22:12
第一个问题
你用的是VBA控件工具中的组合框,这个只能显示所选条目的ID号,并且使用这个控件,需要每个单元格都要插入一个这个控件,即不效率,也使得EXCEL文件臃肿,减缓运算速度。
如果要解决,有两个方案可选择:
1、直接使用EXCEL自带的“数据有效性——选项”功能,设置下拉选择条目,这个不用每个单元格都设置,只要一次性选中具有相同选项的单元格区域统一设置即可。
2、使用VBA的ActiveX控件中的ComboBox控件,只需要插入一个控件,然后根据活动单元格(即光标所在单元格或被选中的单元格)状态,在Worksheet_Change事件中加入相应代码,使控件跟随光标移动,并自动判断活动单元格所在列,自动装入相应选项,这样选出来的也是选项内容而不是Id号。
上述两个方案,优选第二个方案,既简化了设置,又大大精简了EXCEL文件大小(只有一个控件+一段代码而已)。
第二个问题
在保存前,首先要做的是对填写的数据进行校验(即所填数据是否符合相应规则,如果不符合,提示修改并不保存),全部数据校验通过,才将数据保存到相应表中,并清空所填全部信息。
通过后,保存前,先计算数据库(即图二)必填项目的最后一行的位置,这个很简单。比如A列内容是必填的,则表明A列是不可少的,它所占的行数就是整个表的最大行数,所以用:
nRow=[A65536].End(xlUp).Row即可算出A列的最后一行有数据的行号,然后用:
Cells(nRow+1,1)=********格式依次将填写的数据保存到图二表最后一行的下一行。
由于看不到原始文件,仅凭图,无法给出具体代码,所以,只能用文字描述编写代码的思路,只要认真理会,代码应该没有问题,况且这两个问题所涉及的代码都不复杂,每段最多不会超过20行。
热心网友
时间:2023-06-23 22:12
如果控件是你自己做的 这个问题对你来说应该不难 combox 对应下列单元格 如果要顺序填充 加个判断就行了
热心网友
时间:2023-06-23 22:13
ComboBox的Text属性