ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 150074|回复: 266

[原创] 以《仓库进销存管理系统》来学习VBA知识

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-18 13:58 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:模板和开源系统
在“坛子”里转悠了这么久,好不容易发现了一个非常不错的好帖——yaji2008老师发的《从实例学习VBA编程》,我一口气翻完了40多页,可惜的很,有头无尾,众失所望,是为憾事!出于此,我也有一种冲动,只是一时半伙不知怎么切入。今天,冒天下大不韪,按照自己的经验来“狗尾续貂”,以示大家对EH的厚爱,在下面的论述中,有不妥或有意见和建议的学友,希望大家不要吝啬。
在此之前,大家必须对财务的仓库管理有个简单的了解。以便后期的编程思想,编程目的不会偏离方向。编程的目的是解决实际问题,提高工作效率。这是所有学习VBA朋友的宗旨吧。可以这么说,我就是为了解决工作中的问题,我才开始学习的,以前,在学校里根本就不知道VBA为何物,哈哈,不怕大家笑话,就连工作表函数也不曾知道。我是从if函数开始的,当时很是好奇,发出感叹,电子表格还有这样神奇的功能,可以做出判断!!!后来就买了本函数的书,慢慢啃,发展到现在开始啃VBA了。以前没有学过VB,学习VBA也是去年开始的事情。在实践中感知:偷懒,是一种原始的学习动力,勤于思考是偷懒的结果。兴趣是勤于思考的儿子。
横观一些财务软件中的仓库模块,大体都是很复杂,或不适合该公司的账务要求,有些功能,根本就用不上,冗余非常严重。好不容易把数据输入了数据库,结果还要导出到电子表格中来数据处理,实在费解。如果你会VBA的话,大可可以为公司节省点银子,同时自己也不用太累,有时,甚至还可以在同事面前秀上一把。更不要说你还要花时间和精力去熟悉那个公司用的什么劳什子财务软件了。
对于一些软件要数据初始化,尤其是对物品进行编码录入电脑中,以后类似的物品不能放在一起,不能从编码中看出内容,很是费解。本人认为这是把问题复杂化,得不偿失。像我这样懒惰的人,很少会干这样的事情。因此本人对财务软件不以为然。对物品的编码无非是要解决一个问题,就是物品的唯一性,在整个电算化的过程中都尤其重要(在以后的论述中我会加强这种意识),可是人脑不是电脑。
电算,一个最大的好处就是汇总和查询。(本系统主要是围绕这两点开展VBA知识的讲解,并逐步加以比较和引申)
说了这么多,还没有进入主题。
仓库管理(进销存管理),无非是对物料的归类,摆放,统计,下面就仓库的材料入库进行简要说明,材料入库,填制入库单,填单,可有学问了,很多人都不是很专业,或多或少都有一些瑕疵。首先是入库时间,供应单位,品名,规格,单位,数量,单价,金额,购货方式(现金还是挂账),合计,大小写,没有填完的空行要用斜线划掉,以及双方签名确认。里面任何一项元素都不应少,少了,财务上都会出现漏洞。现实中,没有几个仓库员能做好的,都是丢三落四的,弄得数据不具有完整性,直接导致财务工作出错率大大提高。
刚才我们讲了入库单的填制,那么我们的电脑台账也就要设置相应的字段作为表头。为了后面的好电算化统计,我们一般都把表格设为二维表格(也是数据库范式的需要),即不要有复合表头。把复合表头的任务交给工作表名。一来二便,何不美哉!为了能确定唯一性,这里我们要把表头适当的合并,把规格一起合并品名中(如果有颜色区别的也一起合并其中)。
我们为什么要这样做?先来看看其他一些数据库的理念是怎么样的:数据初始化,其目的是确定唯一性,而电脑的唯一性是区别在任何一个字符的,哪怕是一个不起眼的空格,尤其是字符串后面的空格更叫人捉摸不透(对初学者来说),明明每个字都相同,却汇总是会出问题,汇总不进去,甚至有人怀疑电脑,有问题!!呵呵……真是一个笑话,这个笑话就发生在我们的身边。不知大家有没有同感………………不要顾着笑,我们要从中得到些什么……
为了解决这个问题,我们会用一些方法杜绝这种情况的发生,在出库时我们用控件listview来输入。这是后话!

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-7-18 14:04 | 显示全部楼层
原帖由 ctp_119 于 2010-7-18 13:58 发表
在“坛子”里转悠了这么久,好不容易发现了一个非常不错的好帖——yaji2008老师发的《从实例学习VBA编程》,我一口气翻完了40多页,可惜的很,有头无尾,众失所望,是为憾事!出于此,我也有一种冲动,只是一时半伙不 ...


在实践中感知:偷懒,是一种原始的学习动力,勤于思考是偷懒的结果。兴趣是勤于思考的儿子。

这句话说的很经典,支持一下,呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-18 14:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/JABBDV(N$0NI3_JYLPL~`FM.jpg
先给个表头,列出字段要素,以示后面好讲解。
为了后面提供的查询界面要实行规范输入。用有效性规范输入采购类别,先用普通的设置方法来设置有效性。后面我们用程序来控制。
   [img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/[]8I`K{9`VJQ`6}N64}`{FE.jpg[/img]

单击数据菜单中的有效性,设置如下:

[img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/TY_WSA[QK8UUVTO3Z_(Q`TV.jpg[/img]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-18 14:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为什么给的表头图片看不见呢?还有后面的对话框怎么都不见呢?变成了地址,疑惑!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-18 14:27 | 显示全部楼层
本来 是层层深入的讲解,慢慢的给大家上传的,我看还是给大家先上传算了,给大家有个初步的认识,再来讲解!!
这个可是我前段时间再用的。

仓库进销存.rar

43.6 KB, 下载次数: 12432

仓库进销存实例

TA的精华主题

TA的得分主题

发表于 2010-7-18 14:28 | 显示全部楼层
大力支持,继续下去,这里就是好学者的天堂。

TA的精华主题

TA的得分主题

发表于 2010-7-18 14:56 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-18 15:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我们先来看看这个查询,目的是为了与供应商和采购员对账,所以就设计了这个查询窗口。窗口要素有:两个标签,一个框架,两个选项按钮,一个复合框,三个命令按钮。
要点是:当我们单击其中一个选项按钮时,标签提示信息随之改变,更难的是当我们单击其中一个按钮,下拉列表的内容会随之而改变。
Private Sub OptionButton1_Click()
OptionButton1.Value = True
Label2.Caption = "供应商:"
ComboBox1.Clear
On Error Resume Next
Dim Col As New Collection
Dim rng As Range, arr
Dim i As Integer
Dim j As Integer
With Sheets("入库")
For j = 2 To .[H65536].End(xlUp).Row
  If .Cells(j, 8) = "挂账" Then
    Col.Add .Cells(j, 8).Offset(, 1), Key:=CStr(.Cells(j, 8).Offset(, 1))
  End If
Next j
End With
ReDim arr(1 To Col.Count)
For i = 1 To Col.Count
  arr(i) = Col(i)
Next
Me.ComboBox1.List = arr
End Sub

TA的精华主题

TA的得分主题

发表于 2010-7-18 15:43 | 显示全部楼层
楼主慢慢编辑一下,从开始到最后,当中遇到的问题一一说明,这样有助于大家理解

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-18 16:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
别看这一段程序,可不简单了:开始我并不是这样的,这是我经过几次修改后才形成的,开始是借助自定义函数,后面又用sql条件查询到sheets中:
Private Sub Worksheet_Activate()
Range("X1:Z100").ClearContents
Dim cnn As New ADODB.Connection
cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
Sql = "select DISTINCT 供应商 from [入库$] where 采购类别='现金'"
Sql2 = "select DISTINCT 供应商 from [入库$] where 采购类别='外购'"
[Y1].CopyFromRecordset cnn.Execute(Sql)
[Z1].CopyFromRecordset cnn.Execute(Sql2)
cnn.Close
Set cnn = Nothing
End Sub
之后再引用单元格区域:
Private Sub OptionButton1_Click()
OptionButton1.Value = True
Label2.Caption = "供应商:"
ComboBox1.Clear
For i = 1 To [z65536].End(xlUp).Row
  ComboBox1.AddItem Worksheets("查询").Cells(i, 26)
Next i
End Sub
哈哈,,请不要笑我开始幼稚,这是一个开发过程,但是要不断的优化自己的程序,使其更具有独立性。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 16:25 , Processed in 0.056621 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表