Excel制作一个报价单,而且不只是一次报价,要无限次重复报价单的创建,本文介绍一个制作过程。
商业活动中,商品报价是建立商品交易的第一步,通过卖方报价可得到一个是否成交的意向。
假如商品较多,报价单的制作是一个很繁琐的过程,特别是价格不能弄错了,以免造成信誉损失或经济损失。
本文示例如下图所示?
通过一些按钮过程,实现对报价单的创建,这里用到了几张表,有商品信息表,报价信息表,报价表等。
其实可以集合到一个表里进行管理,但分表管理有其特殊的便捷性能,特别是通过代码提取信息的时候很方便。
添加商品信息,通过一个窗体来实现,这样可以选择多条商品,一键添加到报价单里。
如下图所示:
严格来说,本示例并没有什么特别的地方,重点就是要对整个工作表添加进行定位。
本例中应用了数组形式来实现单元格添加,数组有其速度快,准确高效的特点。
其中,单元格定位也是将地址作为数组元素来进行保存,为以后改变单元格提供方便。
保存报价单代码
Private Sub CommandButton6_Click()
'保存报价单
On Error Resume Next
Dim s As Worksheet
Set s = ThisWorkbook.Worksheets("报价记录")
SaveList s
Set s = Nothing
gohome
End Sub
保存过程
Private Sub SaveList(s As Worksheet)
On Error Resume Next
Dim xArr()
xArr = GetxArr(s)
s.Activate
Dim R As Range, ir As Long, ic As Long
ir = 1
ic = s.Cells(ir, s.Columns.Count).End(xlToLeft).Column
ir = 2
Set R = s.Cells(ir, 1).Resize(1, ic)
R.Insert
Set R = s.Cells(ir, 1).Resize(1, ic)
R.Value = xArr
ThisWorkbook.Save
MsgBox "保存成功!", vbInformation, "提示'"
Erase xArr
Set R = Nothing
End 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 Next
Dim sArr()
Dim R As Range, xR As Range, ir As Long, ic As Long
ir = 1
ic = s.Cells(ir, s.Columns.Count).End(xlToLeft).Column
Set R = s.Cells(ir, 1).Resize(1, ic)
ReDim sArr(1 To R.Count)
For Each xR In R
Select Case xR.Column
Case 1
sArr(xR.Column) = "=row()-1"
Case Else
sArr(xR.Column) = Range(CellAddrArr(xR.Column)).Value
End Select
Next xR
GetxArr = sArr
Erase sArr
Set R = Nothing
Set xR = Nothing
End Function
总体来说,制作这个应用还是有其比较实用的功能。
最终结果是将报价这个工作变得简单方便。
欢迎关注、收藏
---END---