Office中国论坛/Access中国论坛

标题: 如何在EXCEL中自动实现流水编号,且保存? [打印本页]

作者: allen1976    时间: 2009-11-17 14:09
标题: 如何在EXCEL中自动实现流水编号,且保存?
请教各位老师:
   如何在EXCEL中自动实现流水编号,且保存在另一工作薄中? 用VB,代码要怎么写?
工单单号从:SOXC000001开始
我想实现如下的效果;
1,当按下"保存"按钮,制令单,黄色区域的信息就会显示在另一张"工单查询中"工作薄中;
2,当按下"新增"按钮,制令单号就会自动编号为:SOXC000002,同时,上一张单号(SOXC000001)的内容(蓝色字体)自动全部清空,因为我要填写新的工单了
…………
依次类推
感恩!!
作者: pureshadow    时间: 2009-11-17 15:47
代码放在SHEET1的VBE里
删除的代码:
Sub nw()
Range("d6") = "SOXC" & Format(Right(Range("d6"), 6) + 1, "000000")
Range("h6,d8:d11,f8:f11,h8:h11,b14:j19").ClearContents
End Sub
右击“删除”的按钮,指定宏,指定到sheet1.nw即可。
保存的代码:
Sub sv()
Dim MyRow As Long
With Sheets("工单查询")
    MyRow = .Range("a65536").End(xlUp).Row + 1
    .Cells(MyRow, 1) = Range("d6")
    .Cells(MyRow, 2) = Range("d8")
    。。。。。。(其他类推)
End With
End Sub
右击“保存”的按钮,指定宏到sheet1.sv即可。
作者: allen1976    时间: 2009-11-18 09:44
谢谢您!!!
我先研究一下~
作者: allen1976    时间: 2009-11-18 14:26
真是太好了,这正是我想要的效果.

不过,还有2小个问题,还请您再伸援手哦,,,

问题1:
  当点击"新增"时,怎么提示下面的出错窗口?
  另外,在新增后,那些旧的填空的内容(蓝色字体)仍然保留着,要是能够请除就更好了!

问题2:
   如果新增一个<物料查询>按钮,  想把"制令单中的绿色区域(物料)的内容自动存到新的工作薄中<物料查询>中,语句又要如何重写呢?

如附件:[attach]40415[/attach]
作者: pureshadow    时间: 2009-11-18 18:07
新增的代码改一下:
Sub nw()
Range("d6") = "SOXC" & Format(Right(Range("d6"), 6) + 1, "000000")
Range("h6,d8:d11,f8:f11,h8:h11,b14:j19").Select
Selection.ClearContents
End Sub
作者: pureshadow    时间: 2009-11-18 18:10
查询的代码:
Sub qu()
Dim MyFind
With Sheets("工单查询")
    Set MyFind = .Range("a:a").Find(Range("d6"), Lookat:=xlWhole)
    If MyFind Is Nothing Then
        MsgBox "此制令单号不存在"
    Else
        Range("d8") = .Cells(MyFind.Row, 2)
        其他类推
    End If
    set myfind = nothing
End With
End Sub
作者: allen1976    时间: 2009-11-19 11:03
第一个
帮我解决啦, 感谢大哥!!!
第二个:
把您的物料查询的宏代码添加之后:  "制令单"中的绿色区域(物料)的内容还是没有能够自动存到新的工作薄中<物料查询>中啊:
[attach]40428[/attach]
作者: allen1976    时间: 2009-11-19 13:52
我重做了一份"送货单据",[attach]40431[/attach]
还是单据上的内容还是不能另外保存在查询的工作薄中,
另外,
能否在点击按钮2"保存送货单"时,设置提示窗口:"数据已经保存,请勿重复操作",防止在"送货单查询"表内出现重复的单据内容,如果没有重复,就提示"数据保存成功"??
感恩感恩!!!!!
作者: pureshadow    时间: 2009-11-19 14:47
代码中最难的部分都帮你写出来了,剩下的就是这个单元格等于那个单元格的简单语句,也写了一两个例句,楼主你自己研究吧。
授人鱼不如授人以渔。
作者: allen1976    时间: 2009-11-19 15:22
对于VB, 我完全不懂, 抱歉
下面红色字体是我改的
提示"此制令单号不存在".....不知代码要怎么改......
郁闷~~~~~`````

Sub qu()
Dim MyFind
With Sheets("物料查询")  (为工单查询时, 工单查询上的数据粘贴到了"制令单"的对应区域,所以我改了)
    Set MyFind = .Range("a:a").Find(Range("d6"), Lookat:=xlWhole)
    If MyFind Is Nothing Then
        MsgBox "此制令单号不存在"
    Else
         Range("b14:b19") = .Cells(MyFind.Row, 1)
         Range("c14:c19") = .Cells(MyFind.Row, 2)
         Range("e14:e19") = .Cells(MyFind.Row, 3)
            
    End If
    Set MyFind = Nothing
End With
End Sub
作者: pureshadow    时间: 2009-11-20 09:19
with sheets("...")
end with
WITH后的代码中,会有一些直接以点开头的代码,如.range("a:a"),其实是sheets("..").range("a:a"),这里用WITH把相同的都省略了,所以WITH后面的内容根据你想省略的内容来写。
cells(myfind.row,1)是指一个单元格,这个单元格的行是myfind.row,列是1,所以能等于这个单元格的必须也是一个单元格,而range("b14:b19")是一个区域了,所以结果出错。
作者: bingerw    时间: 2009-12-8 20:42
look up
作者: jackie-online    时间: 2009-12-15 13:35
查看一下自动编号源代码
作者: zh394514687    时间: 2011-3-22 16:02
楼主我也遇到了跟你一样的问题能把你的表单发给我看下吗不胜感激我的邮箱地址是zhang394514687@163.com
作者: 余方方    时间: 2011-3-22 17:23
学习了,谢谢
作者: 刘青梅    时间: 2016-12-4 22:41
学习了,谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3