V
B
A
使用VBA开发
餐饮点菜单系统
基本要求
1、选择桌位号;
2、查看菜单;
3、选菜;删菜;
4、提交、生成菜单
比如,请先欣赏下面这张菜单
点击【点菜】后,出现下面这张丑陋的弹窗:
可以看到,功能有:【选择桌位】【查看菜单】【加入菜单】【从菜单删除】【已选菜单】【提交菜单】
然后噼里啪啦如下一顿操作:
提交菜单后,我们看到了4号桌的菜单
功能简陋无比,下面将贴出代码,先贴图,这样看起来比较清晰
下面是窗体中的代码,图片看上去比较模糊(后面会贴出文字版),主要是看整体的样式
窗体中的代码如下:
Private Sub UserForm_Initialize()
'菜单.RowSource = '菜单!C2:E29'
'引用表单内单元格的格式
'caidan = Sheet2.Range('C2:D29')
'For cai_i = LBound(caidan, 1) To UBound(caidan, 1)
'菜单.AddItem
'菜单.List(菜单.ListCount - 1, 0) = caidan(cai_i, 1)
'菜单.List(菜单.ListCount - 1, 1) = caidan(cai_i, 2)
'Next
菜单.ColumnCount = 3 '列表框显示的列数
已选菜单.ColumnCount = 4
选择桌位号.RowSource = '菜单!F2:F51'
'或:选择桌位号.RowSource = '菜单!' & Range('F2:F51').Address
End Sub
Private Sub 查看菜单_Click()
caidan = Sheet2.Range('C2:D29')
For cai_i = LBound(caidan, 1) To UBound(caidan, 1)
菜单.AddItem
菜单.List(菜单.ListCount - 1, 0) = caidan(cai_i, 1)
菜单.List(菜单.ListCount - 1, 1) = caidan(cai_i, 2)
菜单.List(菜单.ListCount - 1, 2) = ''
Next
End Sub
Private Sub 从菜单删除_Click()
For n = 0 To 已选菜单.ListCount - 1
If 已选菜单.Selected(n) = True Then
'遍历菜单,把即将从已选菜单中删除的菜的'√'去掉
For n_caidan = 0 To 菜单.ListCount - 1
If 菜单.List(n_caidan, 0) = 已选菜单.List(n, 0) Then
菜单.List(n_caidan, 2) = ''
Exit For
End If
Next
'从已选菜单中删除
已选菜单.RemoveItem (n)
'ListBox.RemoveItem 方法,从列表中删除一行
'格式:ListBox.RemoveItem(pvargIndex),如果方法成功,则返回true
Exit For
End If
Next
End Sub
Private Sub 加入菜单_Click()
'遍历菜单,如果被选中,则
For i = 0 To 菜单.ListCount - 1
If 菜单.Selected(i) = True Then
'ListBox.Selected 属性,返回一个布尔值,指示listbox中项目的选择状态
If 菜单.List(i, 2) <> '√' Then
已选菜单.AddItem
'先添加一个空行
'一维数组或者单个元素,通过additem添加
'ListBox.AddItem方法,向列表中添加项目
已选菜单.List(已选菜单.ListCount - 1, 0) = 菜单.List(i, 0)
已选菜单.List(已选菜单.ListCount - 1, 1) = 菜单.List(i, 1) '单价
已选菜单.List(已选菜单.ListCount - 1, 2) = '1'
已选菜单.List(已选菜单.ListCount - 1, 3) = 菜单.List(i, 1) '金额
'二维数组,通过list添加
菜单.List(i, 2) = '√'
'选过了的菜品,在原菜单中打钩
ElseIf 菜单.List(i, 2) = '√' Then
For i_already = 0 To 已选菜单.ListCount - 1
If 菜单.List(i) = 已选菜单.List(i_already) Then
已选菜单.List(i_already, 2) = 已选菜单.List(i_already, 2) + 1
已选菜单.List(i_already, 3) = 已选菜单.List(i_already, 1) * 已选菜单.List(i_already, 2)
Exit For
End If
Next
End If
End If
Next
End Sub
Private Sub 提交菜单_Click()
Set new_sheet = ThisWorkbook.Worksheets.Add
'Set new_sheet = Worksheets.Add
new_sheet.Name = 选择桌位号.Value & '号桌'
new_sheet.Range('A1') = '菜名'
new_sheet.Range('B1') = '单价'
new_sheet.Range('C1') = '数量'
new_sheet.Range('D1') = '金额'
menu_num = 0
menu_mon = 0
'遍历已选菜单,在新表单中记录菜名、单价和数量
For m = 0 To 已选菜单.ListCount - 1
new_sheet.Range('A' & m + 2) = 已选菜单.List(m, 0) '菜名
new_sheet.Range('B' & m + 2) = 已选菜单.List(m, 1) '单价
new_sheet.Range('C' & m + 2) = 已选菜单.List(m, 2) '数量
menu_num = menu_num + 已选菜单.List(m, 2)
new_sheet.Range('D' & m + 2) = 已选菜单.List(m, 3) '金额
menu_mon = menu_mon + 已选菜单.List(m, 3)
Next
huizong_row = new_sheet.UsedRange.Rows.Count
new_sheet.Range('A' & huizong_row + 1) = '汇总'
new_sheet.Range('C' & huizong_row + 1) = menu_num
new_sheet.Range('D' & huizong_row + 1) = menu_mon
End Sub
功能相当简陋
同志仍需努力
好书推荐
最近中午在看的是《商君书》,篇幅很短,总共200页,也就100张。算了下,如果每天看5张,20天(一个月,22个工作日)看完。
我这么“精打细算”似乎显得读书是件苦差事。
目前为止,感觉商鞅的主要观点是:重农业、重军事,轻商、轻技艺。
商鞅有几个观点挺有意思。
比如,要压制巧舌如簧、空谈的人,认为这些人靠着一张嘴混饭吃,既然凭着一张嘴就能吃饭,谁还去种田?商鞅称这些人为“虱“。这是在说那些“纵横家”吗?
再如,如果很多事在小群体里(乡亲族里)就能解决,那么一定会王(第四声)天下;如果需要到官吏们那儿解决,那么国家一定会强盛;但如果需要劳烦君王来过问,那么国家就会削弱。
商鞅通篇在说农业生产的重要性,他理想中的老百姓是:无事就是种田机器,有战事就能上场杀敌。
在与秦孝公商议变法之事时,他的同僚们认为:如果此事没有带来几倍的好处,那么最好继续遵循旧制;并且,百官和老百姓都熟悉旧制,大家都轻松。这跟现代职场绝大部分人的想法很相似,做项目之前先有预期,如果预期没有数倍的效果,那么项目就最好不要做。大到公司,小到个人,往往是在以往的基础上修修补补,很少会推翻重来,一是难以预测后果,二是守旧易、创新难,人总是有惰性。
商鞅认为,儒家那一套“仁爱”的做法不适用于现今,他主张“重轻”,用重刑惩罚轻罪,这样人就不会犯轻罪,更不可能发展成重罪。如果“重重”“轻轻”,那么“轻”则不止。
一百个人干活,一个闲蛆,那么能“王天下”;十个人干活,一个闲蛆,那么尚且能够强盛;一半的人在干活,一半的人是闲蛆,那么就离完蛋不远了。联想现在很多公司,大概是一个人在干活,十个人是闲蛆。
先写到这儿,下次看到精彩之处再记录下来。
愚者之笑,智者哀焉
狂夫之乐,贤者丧焉
联系客服