从0学Excel VBA编程 · 进销存管理系统 第1篇:系统设计与初始化——先把四张表搭起来
- 2026-09-20 12:51:47
从0学Excel VBA编程 · 进销存管理系统 第1篇:系统设计与初始化——先把四张表搭起来
学习目标
搞懂进销存三件事:进货(进)、卖货(销)、剩多少(存) 会用 VBA 一键建好系统的四张标准表,并写上表头 会往商品表录入数据、并对库存做"低于下限就报警"的检查
知识点精讲
进销存就是小店每天都要算的三笔账:
进:从供应商进货,库存变多 销:卖给客户,库存变少 存:现在仓库里还剩多少,够不够卖
电脑怎么管?不用一个花里胡哨的软件,用 Excel 加 VBA 就够了。核心就四张表:
最重要的一条规矩:三张业务表都用「商品编号」来关联,绝不用商品名称。编号像身份证,永远不重样;名称可能写错、改名,一改就乱套。
本篇先不急着算库存,把架子搭稳:建表、录商品、做预警。后面几篇再填进货、销售、自动算库存。
【SVG 示意图】
3 个实战案例
案例 1:一键建好四张表(最简单,先把架子立起来)
功能说明:运行一下,自动在当前工作簿里建出「商品信息、进货入库、销售出库、库存汇总」四张表,并写好表头。再点一次会先清掉旧的再建,不会重复。
Sub 案例1_初始化进销存表() Dim 表名 As Variant, 表头 As Variant Dim i As Long, j As Long, sht As Worksheet 表名 = Array("商品信息", "进货入库", "销售出库", "库存汇总") 表头 = Array( _ Array("商品编号", "商品名称", "规格", "单位", "进价", "售价", "库存下限"), _ Array("入库单号", "日期", "商品编号", "数量", "单价", "金额"), _ Array("出库单号", "日期", "商品编号", "数量", "单价", "金额"), _ Array("商品编号", "商品名称", "当前库存", "库存下限", "库存状态") _ ) ' 先删掉已存在的同名表,避免重复建 Application.DisplayAlerts = False For i = 0 To UBound(表名) On Error Resume Next ThisWorkbook.Sheets(表名(i)).Delete On Error GoTo 0 Next i Application.DisplayAlerts = True ' 建表 + 写表头 For i = 0 To UBound(表名) Set sht = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)) sht.Name = 表名(i) For j = 0 To UBound(表头(i)) sht.Cells(1, j + 1).Value = 表头(i)(j) Next j sht.Range("A1").CurrentRegion.Font.Bold = True Next i MsgBox "已创建四张表:" & Join(表名, "、"), vbInformationEnd Sub操作步骤:
新建一个 Excel 文件,打开 VBA 编辑器(Alt+F11),插入模块。 粘贴上面代码,按 F5 运行。 回到 Excel,看到多了四张表,第一行都是表头,加粗了。 想重来就再运行一次,旧表会被清掉重建。
案例 2:往商品表追加一个商品(中等,带自动编号)
功能说明:每运行一次,弹窗问你商品名称、规格等信息,自动生成「P001、P002…」这样的编号,追加一行到商品信息表。编号永远不重复,不用手填。
Sub 案例2_添加商品() Dim ws As Worksheet, 新编号 As String, 新行 As Long Set ws = ThisWorkbook.Sheets("商品信息") 新行 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 If ws.Cells(1, 1).Value = "" Then 新行 = 2 ' 表是空的时候从第2行开始 新编号 = "P" & Format(新行 - 1, "000") ws.Cells(新行, 1).Value = 新编号 ws.Cells(新行, 2).Value = InputBox("请输入商品名称:", "添加商品") ws.Cells(新行, 3).Value = InputBox("请输入规格:", "添加商品") ws.Cells(新行, 4).Value = InputBox("请输入单位:", "添加商品") ws.Cells(新行, 5).Value = Val(InputBox("请输入进价:", "添加商品")) ws.Cells(新行, 6).Value = Val(InputBox("请输入售价:", "添加商品")) ws.Cells(新行, 7).Value = Val(InputBox("请输入库存下限:", "添加商品")) MsgBox "已添加商品:" & 新编号 & " " & ws.Cells(新行, 2).Value, vbInformationEnd Sub操作步骤:
先运行案例 1 建好表。 粘贴本代码,按 F5。 依次在弹窗里填:名称(如"笔记本")、规格("A5")、单位("本")、进价("8")、售价("12")、库存下限("20")。 多运行几次,商品信息表就填满了,编号自动 P001、P002 递增。 顺手在「库存汇总」表把对应商品的「当前库存」「库存下限」也填上行(下一案例要用)。
案例 3:库存低于下限就报警(实用,老板最爱看)
功能说明:遍历库存汇总表,凡是「当前库存 ≤ 库存下限」的商品,在第 5 列标红写"需补货";够的标绿写"正常"。一眼看出哪些要进货。
Sub 案例3_库存预警() Dim ws As Worksheet, 最后行 As Long, i As Long Dim 当前库存 As Double, 下限 As Double Set ws = ThisWorkbook.Sheets("库存汇总") 最后行 = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row If 最后行 < 2 Then MsgBox "库存汇总表还没有数据,请先录入", vbExclamation: Exit Sub For i = 2 To 最后行 当前库存 = Val(ws.Cells(i, 3).Value) 下限 = Val(ws.Cells(i, 4).Value) If 当前库存 <= 下限 Then ws.Cells(i, 5).Interior.Color = vbRed ws.Cells(i, 5).Font.Color = vbWhite ws.Cells(i, 5).Value = "需补货" Else ws.Cells(i, 5).Interior.Color = vbGreen ws.Cells(i, 5).Font.Color = vbWhite ws.Cells(i, 5).Value = "正常" End If Next i MsgBox "预警检查完成,红色为需补货!", vbInformationEnd Sub操作步骤:
确保「库存汇总」表已有数据(至少填了商品编号、名称、当前库存、库存下限这几列)。 粘贴本代码,按 F5。 看第 5 列「库存状态」:绿底"正常"、红底"需补货"一目了然。 以后每次补完货改一下当前库存,再点一次就刷新预警。
本篇小结
架子最重要:四张表(商品信息 / 进货入库 / 销售出库 / 库存汇总)是整套系统的地基。 编号是纽带:所有表靠「商品编号」连起来,这是后面自动算库存的关键。 本篇三件事:一键建表 → 自动编号录商品 → 库存预警,已经像一个迷你系统的雏形。
下一篇预告
进销存管理系统 第2篇:进货入库模块——录入一张进货单,自动给对应商品的库存加数量、自动算金额,并写进进货入库表和库存汇总表。敬请期待。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。