Board logo

標題: [發問] 單號自動編號以"更新當日日期"後自動流水號? [打印本頁]

作者: elaine688    時間: 2016-2-4 10:50     標題: 單號自動編號以"更新當日日期"後自動流水號?

請問版上前輩
我有一段vba寫法, 其銷貨單單號寫法是:
Sheets("銷貨單").Select
Range("B5") = Format(Date, "emmdd") & "-" & Format(j, "0000") + 1
單號:1050202-7
是用民國年月日-加上流水號
但是, 像上例比如當日自動序號到當日使用的流水號....
比如今日是105/02/04
要怎麼寫, 它的單號自動編號才能以"更新當日日期"後自動流水號?
作者: luhpro    時間: 2016-2-8 20:51

只要加個日期變數紀錄上次執行時的日期,
而在每次產生流水號前比對兩日期若不一致表示換日,
此時再將流水號歸零即可.
  1.   Dim dDate As Date
  2.   Sheets("銷貨單").Select
  3.   If dDate <> Date Then
  4.     j = 0
  5.     dDate = Date
  6.   End If
  7.   Range("B5") = Format(Date, "emmdd") & "-" & Format(j, "0000") + 1
複製代碼

作者: Hsieh    時間: 2016-2-8 22:31

回復 1# elaine688


    這要回去討論資料庫,看看你儲存幾筆當日資料
然後以該數值賦予程式中的 j
Range("B5")= Format(Date, "emmdd-" & Format(j + 1, "000"))
作者: c_c_lai    時間: 2016-2-9 06:30

回復 1# elaine688
亦可如此:
  1. Private Sub Workbook_Open()
  2.     If TimeValue(Now) >= "上午 08:45:00" Then [B1] = 1
  3. End Sub

  4. Sub Ex()
  5.     [A1] = SerialNo
  6.     [A2] = SerialNo
  7.     [A3] = SerialNo
  8. End Sub

  9. Function SerialNo() As String
  10.     Static cJ As Integer
  11.    
  12.     If [B1] = 1 Then cJ = 0
  13.     [B1] = 0
  14.     SerialNo = Format(Date, "emmdd") & "-" & Format(cJ + 1, "00000")
  15.     cJ = cJ + 1
  16. End Function
複製代碼

作者: 准提部林    時間: 2016-2-9 13:12

本帖最後由 准提部林 於 2016-2-9 13:36 編輯

銷貨單號有以下問題, 可能須考慮:
1.日期可能不是當天_例如:先以手開單出貨,隔幾天補登
2.或因臨近月結日,應客戶規定須計入下月帳,則須以跨月帳日期輸入,
  例如:每月月結日為20日,因客戶可能21或22日才收到貨,
  本筆貨款應計入下月帳,為使應收帳款日期一致,可能須將銷貨單日期改為21日
3.銷貨單可能有某些原因而刪除,這會產生〔跳號〕,
  若僅以日期去計算筆數,再以〔筆數〕加一,應還不是最正確的做法

最好能以〔FIND〕銷貨明細中〔指定日期.EMMDD]最後一筆單號,以其〔序號〕加一!

假設:A2為〔銷貨日期〕.A3為〔銷貨單號〕,銷貨明細工作表的〔單號〕在B欄(有排序)
Dim DD&, xF As Range, S%
DD = Format([A2], "emmdd")
Set xF = [銷貨明細!B:B].Find(DD, SearchDirection:=xlPrevious)
If Not xF Is Nothing Then S = Right(xF, 3) + 1 Else S = 1
[A3] = DD & Format(S, "-000")




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)