Board logo

標題: VBA 序號超過12碼數字如何以數列方式往下填滿 [打印本頁]

作者: aassddff736    時間: 2024-2-17 11:28     標題: VBA 序號超過12碼數字如何以數列方式往下填滿

我的序號超過12碼數字如何以數列方式往下等加一填滿
[attach]37432[/attach]
作者: Andy2483    時間: 2024-2-17 16:44

本帖最後由 Andy2483 於 2024-2-17 16:46 編輯

回復 1# aassddff736


    謝謝前輩發表此主題與範例
學習方案如下,請前輩參考

Private Sub CommandButton1_Click()
Dim T$, Q$, Brr, V&
T = Trim([A1]): V = Val(TextBox1.Value): If V = 0 Or T = "" Then Exit Sub
ReDim Brr(1 To V, 1 To 1)
Q = StrReverse(Mid(Val(StrReverse(T & "1")), 2))
T = Replace(T, Q, "")
For i = 0 To V - 1: Brr(i + 1, 1) = T & (Val(Q) + i): Next
[A1].Resize(V) = Brr
End Sub
作者: aassddff736    時間: 2024-2-17 17:02

回復 2# Andy2483


感謝大神
我爬文很久 沒找到
非常開心您的幫忙
您真的是我的神
作者: aassddff736    時間: 2024-2-18 02:33

回復 2# Andy2483

請問大神
我的碼數能跟A1依樣嗎?0001不要變成1
作者: Andy2483    時間: 2024-2-19 08:00

回復 4# aassddff736

謝謝前輩回復
後學修改與學習心得如下,請前輩參考
執行前:
[attach]37442[/attach]

執行結果:
[attach]37443[/attach]

Private Sub CommandButton1_Click()
Dim T$, Q$, Brr, V&, L%
'↑宣告變數
T = Trim([A1]): V = Val(TextBox1.Value): If V = 0 Or T = "" Then Exit Sub
'↑令T變數是[A1]儲存格去除頭尾後的新字串,令V變數是文字窗輸入值轉化成的數值
'如果V變數是0 或T變數是空字元,就結束程式執行

Intersect(Me.UsedRange, [A:A]).Offset(1).ClearContents
'↑令[A2]開始以下的儲存格清除內容
ReDim Brr(1 To V, 1 To 1)
'↑宣告Brr變數是二維空陣列
Q = Val(StrReverse(T & "1")): Q = StrReverse(Mid(Q, 2)): L = Len(Q)
'↑令Q變數是 T字串最後的連續數字串,令L變數是Q變數的字元數
T = Replace(T, Q, "")
'↑令T變數變成至換掉Q變數後的新字串
For i = 0 To V - 1: Brr(i + 1, 1) = T & Application.Text(Val(Q) + i, String(L, "0")): Next
'↑設順迴圈!令i變數從0 到V變數-1,將迴圈新字串寫入Brr陣列中
[A1].Resize(V) = Brr
'↑令從[A1]儲存格開始向下擴展V變數個儲存格範圍,以Brr陣列值寫入
End Sub
作者: aassddff736    時間: 2024-2-19 10:52

回復 5# Andy2483

謝謝您的細心指導
我很想學會VBA 目前正在學基礎 謝謝您!

[attach]37445[/attach]

如果我的序號是"0001"展開會變"1"我要如何讓它不變動 設成文字格是嗎?
作者: Andy2483    時間: 2024-2-19 11:53

回復 6# aassddff736

選取A:A
[attach]37446[/attach]
作者: aassddff736    時間: 2024-2-19 13:58

回復 7# Andy2483

謝謝指教




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