返回列表 上一主題 發帖

VBA 序號超過12碼數字如何以數列方式往下填滿

VBA 序號超過12碼數字如何以數列方式往下填滿

我的序號超過12碼數字如何以數列方式往下等加一填滿
序號展開.zip (27.15 KB)

本帖最後由 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
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 2# Andy2483


感謝大神
我爬文很久 沒找到
非常開心您的幫忙
您真的是我的神

TOP

回復 2# Andy2483

請問大神
我的碼數能跟A1依樣嗎?0001不要變成1

TOP

回復 4# aassddff736

謝謝前輩回復
後學修改與學習心得如下,請前輩參考
執行前:
20240219_1.jpg
2024-2-19 07:59


執行結果:
20240219_2.jpg
2024-2-19 07:59


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
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 5# Andy2483

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

擷取.JPG
2024-2-19 10:42


如果我的序號是"0001"展開會變"1"我要如何讓它不變動 設成文字格是嗎?

TOP

回復 6# aassddff736

選取A:A
20240219_3.jpg
2024-2-19 11:53
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 7# Andy2483

謝謝指教

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題