請問VBA 如何製作 "複製分頁到最後並且依照月份順序改名字"

請問VBA 如何製作 "複製分頁到最後並且依照月份順序改名字"

我有個需求
我要先進行資料處理(在110-00中)
然後再把分頁(110-00)整個複製一份到最後
並且更名為原本月份再加一
*例如 本來有的月份是6月,我要複製到最後更名為7月

我有找到類似的方式可以遞增

Sub 測試()
Dim Aname As String
Aname = Sheets(Sheets.Count).Name
A = Right(Aname, 2)
A = A + 1
Sheets(2).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "月-0" & A
End Sub

但現在有幾個問題
1.列表沒辦法呈現大於10的月份會出錯,所以我改成"月-01",並且把Right抓兩位數這樣可以抓到"01"
但是這樣到10月會變成"月-010"希望不要有0

2.如果要讓分頁名稱是"1月",資料用Left抓1位,這樣到10月一樣出問題後面會變"2月"
,如果名稱是"01月",用Left抓2位會變"2月",3月會出錯

3.還有一點,在我第一個月還沒建立資料時會出錯
請問VBA 如何製作 "複製分頁到最後並且依照月份順序改名字"
所以不得已只好設定為110-00,讓他可以用Right抓兩位,讓後續第一個可以產生"月-01"

綜合以上幾點
我希望真正的分頁編號應該是
"110" "2月" "3月" "4月" "5月" "6月" ............. "12月"


不知道怎麼設計 請各位幫幫忙
如果能加以解釋讓小弟學習 再好不過了
感謝!!!
文章關鍵字



Sub 測試()

If Sheets.Count > 12 Then Exit Sub
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Sheets.Count - 1 & "月"

End Sub

tobigb
感謝大大 已經完美解決
snare wrote:
Sub 測試() (恕刪)


S大午安

借問一下S大,如果要在這語法基礎上把命名工作表的方式改成

Sheets(Sheets.Count).Name = Format(Now , "mm") & Sheets.Count - 1

但我又希望工作表的命名都是「四位數字」,前九張工作表要在哪裡加入什麼樣的語法才能修正呢?

我是有看到用
For i = 1 To 31
Sheets(Sheets.Count).Name = (format(i, "0000"))
next i

這個範例,但不知道要如何加入,求S大指點

-----------------

Sub 複製工作表()

If Sheets.Count > 31 Then Exit Sub
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format(Format(Now, "mm0") & Sheets.Count - 1, "0000")

End Sub

感謝S大~
最後做出來的結果是這樣,很方便
雖然中間那段 "mm0" 不是非常確定這樣寫有沒有錯
但做出來的結果確實是我要的
snare
您找到的就是答案 format(Format(now , "mm") ,"0000")
稻草人到處草人
原來是這樣子加上去XDDD 太感謝S大了~~
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!