Excel制作一个报价单,而且不只是一次报价,要无限次重复报价单的创建,本文介绍一个制作过程 。
商业活动中,商品报价是建立商品交易的第一步,通过卖方报价可得到一个是否成交的意向 。
假如商品较多,报价单的制作是一个很繁琐的过程,特别是价格不能弄错了,以免造成信誉损失或经济损失 。
本文示例如下图所示?
通过一些按钮过程,实现对报价单的创建 , 这里用到了几张表,有商品信息表 , 报价信息表,报价表等 。
其实可以集合到一个表里进行管理,但分表管理有其特殊的便捷性能,特别是通过代码提取信息的时候很方便 。
添加商品信息,通过一个窗体来实现,这样可以选择多条商品,一键添加到报价单里 。
如下图所示:
严格来说,本示例并没有什么特别的地方,重点就是要对整个工作表添加进行定位 。
本例中应用了数组形式来实现单元格添加,数组有其速度快,准确高效的特点 。
其中 , 单元格定位也是将地址作为数组元素来进行保存,为以后改变单元格提供方便 。
保存报价单代码
Private Sub CommandButton6_Click()'保存报价单On Error Resume NextDim s As WorksheetSet s = ThisWorkbook.Worksheets("报价记录")SaveList sSet s = NothinggohomeEnd Sub
保存过程
Private Sub SaveList(s As Worksheet)On Error Resume NextDim xArr()xArr = GetxArr(s)s.ActivateDim R As Range, ir As Long, ic As Longir = 1ic = s.Cells(ir, s.Columns.Count).End(xlToLeft).Columnir = 2Set R = s.Cells(ir, 1).Resize(1, ic)R.InsertSet R = s.Cells(ir, 1).Resize(1, ic)R.Value = https://www.itzhengshu.com/excel/xArrThisWorkbook.SaveMsgBox"保存成功!", vbInformation, "提示'"Erase xArrSet R = NothingEnd Sub
单元格地址数组
Private Function CellAddrArr()CellAddrArr = Array("", "", "C2", "I2", "C3", "I3", "C4", "I4", "J18", "I16", "C17")End Function
返回报价单信息值
Private Function GetxArr(s As Worksheet)GetxArr = Array("")On Error Resume NextDim sArr()Dim R As Range, xR As Range, ir As Long, ic As Longir = 1ic = s.Cells(ir, s.Columns.Count).End(xlToLeft).ColumnSet R = s.Cells(ir, 1).Resize(1, ic)ReDim sArr(1 To R.Count)For Each xR In RSelect Case xR.ColumnCase 1sArr(xR.Column) = "=row()-1"Case ElsesArr(xR.Column) = Range(CellAddrArr(xR.Column)).ValueEnd SelectNext xRGetxArr = sArrErase sArrSet R = NothingSet xR = NothingEnd Function
总体来说,制作这个应用还是有其比较实用的功能 。
最终结果是将报价这个工作变得简单方便 。
欢迎关注、收藏
【VBA编程,报价单的管理过程制作方法,源码】---END---