Board logo

標題: [發問] 編號方式-英文+年月+流水編號2碼.出來沒按順序 [打印本頁]

作者: kkooo15    時間: 2019-8-11 23:45     標題: 編號方式-英文+年月+流水編號2碼.出來沒按順序

本帖最後由 kkooo15 於 2019-8-11 23:47 編輯

問題﹕編號方式-英文+年月+流水編號2碼.出來沒按順序
按新增的時候應該要跳C190805,為什麼他會跳到C190813?

[attach]31146[/attach]
  1. Private Sub Button1_Click()
  2.     Call 新增編號
  3. End Sub

  4. Private Sub Button3_Click()
  5.     Call 新增資料
  6. End Sub
  7. Sub 新增編號()
  8.     Set wSh = Sheets("工作表1")
  9.     Dim i As Integer
  10.     i = 4
  11.     Do
  12.     i = i + 1
  13.         If wSh.Cells(i, 3) = "" Then Exit Do
  14.         If TBox1.Value = "C" & Application.Text(Date, "YYMM") & Right("00" & Number + 1, 2) Then
  15.         Number = Number + 1
  16.         End If
  17.         TBox1.Value = "C" & Application.Text(Date, "YYMM") & Right("00" & Number + 1, 2)
  18.     Loop

  19. End Sub

  20. Sub 新增資料()
  21.     Set wSh = Sheets("工作表1")
  22.     '防呆
  23.     If TBox1 = "" Or TBox2 = "" Or TBox3 = "" Then MsgBox ("資料輸入不全。")   '結束視窗提示:Exit Sub
  24.     Dim i As Integer
  25.     i = 4
  26.     Do
  27.     i = i + 1
  28.     If wSh.Cells(i, 3) = "" Then Exit Do
  29.     If TBox1.Text = wSh.Cells(i, 3) Then
  30.         MsgBox ("合約編號重複,請重新輸入。")   '結束視窗提示
  31.     Exit Sub
  32.     End If
  33.     Loop
  34.     k = 0
  35.     For j = 3 To 5
  36.     k = k + 1
  37.     wSh.Cells(i, j) = Me("TBox" & k).Value
  38.     Next
  39.     MsgBox ("編號" & TBox1.Text & "合約,新增完成。") '結束視窗提示
  40. End Sub
複製代碼
附件﹕
[attach]31145[/attach]
作者: ikboy    時間: 2019-8-12 12:41

衹是編號可以簡化一下:
  1. Private Sub UserForm_Initialize()
  2.     Dim ym$, Myr&
  3.     ym = "C" & Format(Date, "YYMM")
  4.     Myr = [c65536].End(3).Row
  5.     a = Cells(Myr, "c")
  6.     TBox1.Value = ym & Format(IIf(Left(a, 5) = ym, Val(Right(a, 2)), 0) + 1, "00")
  7. End Sub
複製代碼

作者: kkooo15    時間: 2019-8-12 18:33

回復 2# ikboy
非常謝謝,把程式變短了,而且也完成我的需要。

程式碼如下﹕
  1. Private Sub UserForm_Initialize()
  2.     Dim ym$, Myr&
  3.     'Long 的型態宣告字元為 &
  4.     'String 的型態宣告字元為 $
  5.     ym = "C" & Format(Date, "YYMM")
  6.     'ym = "C"開頭 + 年(2碼)月
  7.     Myr = [c65536].End(3).Row
  8.     'Myr = C行最下面往上找到有字的那一格
  9.     a = Cells(Myr, "c")
  10.     'a = Cells(Myr那列,C欄)
  11.     TBox1.Value = ym & Format(IIf(Left(a, 5) = ym, Val(Right(a, 2)), 0) + 1, "00")
  12.     'TBox1 = ym=[c+年+月] & C行最下面往上找到有字的那一格如果= ym的前5個字元
  13.     '就5個字元後面加2碼並加1
  14.     '最後把資料放到TBox1
  15. End Sub
複製代碼
檔案如下﹕(有需要的自取)
[attach]31149[/attach]




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