窗体结构 :

工作表目录:

产品信息sheet1:

订单记录sheet2:

商品信息sheet3:

实现代码:


Dim arr()
Dim ID As String
Dim DJ As LongPrivate Sub CommandButton1_Click()If Me.ListBox1.Value <> "" And Me.ListBox1.Value <> "" And Me.ListBox1.Value <> "" And Me.TextBox1 > 0 ThenMe.ListBox4.AddItemMe.ListBox4.List(Me.ListBox4.ListCount - 1, 0) = IDMe.ListBox4.List(Me.ListBox4.ListCount - 1, 1) = Me.ListBox1.ValueMe.ListBox4.List(Me.ListBox4.ListCount - 1, 2) = Me.ListBox2.ValueMe.ListBox4.List(Me.ListBox4.ListCount - 1, 3) = Me.ListBox3.ValueMe.ListBox4.List(Me.ListBox4.ListCount - 1, 4) = Me.TextBox1.ValueMe.ListBox4.List(Me.ListBox4.ListCount - 1, 5) = Me.TextBox1.Value * Me.Label2.Caption
Else
MsgBox "请正确选择商品!!!"
End If
Me.Label5.Caption = Me.Label5.Caption + Me.TextBox1.Value * Label2.CaptionEnd SubPrivate Sub CommandButton2_Click()
For i = 0 To Me.ListBox4.ListCount - 1If Me.ListBox4.Selected(i) = True ThenMe.Label5.Caption = Me.Label5.Caption - Me.ListBox4.List(i, 5)Me.ListBox4.RemoveItem iEnd If
NextEnd SubPrivate Sub CommandButton3_Click()
Dim DDID As String
Dim i
If Me.ListBox4.ListCount > 0 Theni = Sheet2.Range("a65536").End(xlUp).Row + 1DDID = "D" & Format(VBA.Now, "yyyymmddhhmmss")For j = 0 To ListBox4.ListCount - 1Sheet2.Range("a" & i) = DDIDSheet2.Range("b" & i) = DataSheet2.Range("c" & i) = Me.ListBox4.List(j, 0)Sheet2.Range("d" & i) = Me.ListBox4.List(j, 4)Sheet2.Range("e" & i) = Me.ListBox4.List(j, 5)i = i + 1NextMsgBox "结算成功!"ElseMsgBox "购物清单为空的!"End IfEnd SubPrivate Sub ListBox1_Click()Dim dic
Set dic = CreateObject("Scripting.Dictionary")
Me.ListBox2.ClearFor i = LBound(arr) To UBound(arr)If arr(i, 2) = Me.ListBox1.Value Thendic(arr(i, 3)) = 1End If
NextMe.ListBox2.List = dic.keys
Me.ListBox3.Clear
Me.Label2.Caption = 0End SubPrivate Sub ListBox2_Click()Dim dic
Me.ListBox3.Clear
Set dic = CreateObject("Scripting.Dictionary")For i = LBound(arr) To UBound(arr)If arr(i, 2) = Me.ListBox1.Value And arr(i, 3) = Me.ListBox2.Value Thendic(arr(i, 4)) = 1End If
NextMe.ListBox3.List = dic.keys
Me.Label2.Caption = 0End SubPrivate Sub ListBox3_Click()For i = LBound(arr) To UBound(arr)If arr(i, 2) = Me.ListBox1.Value And arr(i, 3) = Me.ListBox2.Value And arr(i, 4) = Me.ListBox3.Value ThenID = arr(i, 1)DJ = arr(i, 5)End If
NextMe.Label2.Caption = DJEnd SubPrivate Sub ListBox4_Click()End SubPrivate Sub UserForm_Activate()
Dim dic
arr = Sheet1.Range("a2:e" & Sheet1.Range("a65536").End(xlUp).Row) '数组中的每一行都循环,在表格中对应位置增加项目,可自动更新
Set dic = CreateObject("Scripting.Dictionary")For i = LBound(arr) To UBound(arr)dic(arr(i, 2)) = 1 '每一行的第二列拿过来放在数组中做key
NextMe.ListBox1.List = dic.keys
End Sub

操作结果展示:

利用VBA实现购物清单相关推荐

  1. 【Python之旅】第二篇(三):基于列表处理的购物清单程序

    1.基本需求 编写一个购物小程序,要求实现如下功能: (1)让用户输入工资: (2)输出购物菜单及产品价格: (3)计算用户是否可支付: (4)输出用户剩余的钱,问用户是否继续购物,如果选择继续,则继 ...

  2. sql 发送邮件网络附件_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  3. lua如何打印行号_双11购物清单,你打印了吗?9个打印技巧解密Excel打印问题,每一个难题都可以在这里找到答案...

    关注精彩内容,要先点击这里哦~ 双十一要来了, 你的购物清单整理好了吗? 设置打印时有没有缺斤少两? 作为一个办公人员,经常需要打印很多数据表格,但是表格打印可是技术活儿,稍不留神儿,打印效果就会乱七 ...

  4. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

    大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除,添加,修改字段.这个内容是操作数据库的一项必修的内容,还望大家在实际工作中多利用,所以这节的知识,对于 ...

  5. 利用VBA在EXCLE2010和2007中找回2003式的经典菜单和工具栏

    2019独角兽企业重金招聘Python工程师标准>>> 众所周知,从微软的Office 12(也就是我们所说的Office 2007)开始,软件界面采用了Ribbon界面,又叫做功能 ...

  6. 《Puppet实战手册》——1.4 利用Git管理配置清单

    本节书摘来自异步社区<Puppet实战手册>一书中的第1章,第1.4节,作者:[英]John Arundel著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1. ...

  7. vba 添加outlook 签名_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  8. [转载] 简易Python代码---购物清单

    参考链接: Python清单 购物清单Python代码: # 定义仓库 repository = dict() # 定义购物清单 shop_list = [] # 初始化商品 def init_rep ...

  9. 利用VBA在Word中排出漂亮的代码

    引言 在学习编程的过程中,常常会使用word来做笔记,下面我将对如何利用word宏来进行代码的排版进行说明 1.工具 我用的是word2007,word2003和word2010操作也差不多 2.基本 ...

最新文章

  1. Storm/JStorm之Topology提交过程
  2. java中的深浅克隆
  3. P1586 四方定理
  4. 『数据库』 E-R图(实体联系图)你都不会,你设计什么数据库?
  5. leetcode 剑指 Offer 03. 数组中重复的数字
  6. 通向财务自由之路08_入市或市场时机选择
  7. 【Python】嵌套类的定义与使用
  8. linux的文件解压命令,linux解压命令(linux解压文件命令)
  9. iOS底层探索之多线程(十四)—关于@synchronized锁你了解多少?
  10. Ubuntu18.04 wineQQ完美配置(解决不能输入中文、不能加载头像和图片、企鹅图标不能进入托盘任务栏等问题,附deepin-wine、微信、QQ安装包网盘链接)
  11. 硬盘总是在计算机中消失了,我计算机的D盘,E盘和F盘都消失了,只有C盘了. 这是怎么回事? -d驱动器c驱动器...
  12. 简述计算机维修 维护的基本原则是什么,计算机硬件维护的四大原则
  13. VC++界面美化---模仿MS Office 选项对话框
  14. 20行代码制作字符画版小黄鸭表情包
  15. 新能源整车控制器VCU开发过程分享
  16. Arduino ESP32 看门狗定时器
  17. mysql中端口的概念_端口的概念,端口的分类
  18. jadx-gui-1.4.4 反编译工具使用教程
  19. Vue2 —— 项目实战(电影网首页的制作) 附源码
  20. Okhttp 拦截器 请求添加公共参数、公共Headers 方法

热门文章

  1. 模板方法模式实例与解析--实例一:银行业务办理流程
  2. 在BAT大厂和小公司做开发,会有哪些体验上的区别?
  3. C++线程同步——阻塞线程的方法
  4. 《Best Practices for Data-Efficient Modeling in NLG:How to Train Production-Ready Neural Models with
  5. 数据库中的查询语句示例—select单表查询
  6. 机械迷城MAC下载及攻略
  7. 阿里实习安全工程师面试小记
  8. 【如何让word中每一行英文刚好铺满】
  9. 裸辞后在厦门一个月内面试了24家互联网公司—3年Java开发工程师
  10. fts:路径 XXX 已在工作区 XXX;XXX 中映射