首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel VBA 输入逐步提示/TextBox+ListBox

在前面我们分享过财务记账模板,其中录入科目的时候,我们采用数据验证的方法(Excel 公式函数/数据验证/动态下拉列表),这次,我们试试另一种方法,那就是VBA,通过TextBox+ListBox来实现:

首先,我们在“明细账”表中,点“开发工具“,点"设计模式",插入Active控件,TextBox1、ListBox1,右键点击它们,属性,进行一些必要的Backcolor、Font等设置,不设置也没有关系,不过要把它们的Visible属性设置成False。

然后,我们再插入一个命令按钮,右击,属性,把Name改成CmdSwitch,Caption改成“下拉输入"。

接着,我们就进入Visual Basic编辑器,双击左边的sheet1(明细账),在代码窗口的最面定义模块级公共变量:

点选worksheet,SelectionChange事件:

在其中输入代码:

再选中TextBox1,change事件,输入代码(可以通过双击控件进入):

再选中listbox1,Dbclick事件(可以通过双击控件进入):

再选中CmdSwitch,click事件(可以通过双击控件进入):

简单解释一下代码:

工作表的SelectionChange事件:

当我们选中第4列(科目)、第5列(现金辅助项)的时候,就显示TextBox1、ListBox1,并根据当前选中的单元格(Target,Selection)的位置、高、宽来设置它们的位置。目前是显示在右侧、高度同Target,也可以把TextBox1覆盖在当前单元格上,稍微改下即可:

在代码开头,根据CmdSwitch.Caption来决定是否继续执行代码。当我们点击CmdSwitch的时候,它的Caption在“下拉输入“和”控件输入"之间切换,作为一个开关。

当点击一个科目单元格时,把科目列表存入数组arr,显示TextBox1和ListBox1,当单元格有内容时,把当前单元格的内容赋值给TextBox1,同时触发TextBox1的Change事件,当单元格内容为空时,则TextBox1亦为空,不触发它的Change事件,则把arr所有记录显示在ListBox1中。

当点击一个现金辅助项单元格时,根据左边对应科目来决定是否显示TextBox1和ListBox1。

TextBox1.Change事件:

根据TextBox1的内容,把arr中包含TextBox1的内容的记录提取出来存到数组arrSelect中,再把arrSelect的内容显示到ListBox1中。如果把TextBox1的内容删除,则会显示所有记录。

ListBox1.DbClick事件:

双击一条记录,则把该记录赋值给当前单元格,同时隐藏TextBox1、ListBox1。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230614A047RC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券