依當下執行時間,如何自動將指定工作表名稱修改成此格式"1018-上午"???
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
依當下執行時間,如何自動將指定工作表名稱修改成此格式"1018-上午"???
原工作表名稱如想依當天日期上下午各儲存如"1018-上午",或"1018-下午"名稱時,請問如何可以巨集自動執行達成??? |
|
|
|
|
|
|
- 帖子
- 472
- 主題
- 5
- 精華
- 0
- 積分
- 485
- 點名
- 0
- 作業系統
- Windows
- 軟體版本
- MS Office
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 香港
- 註冊時間
- 2010-7-4
- 最後登錄
- 2014-12-28

|
2#
發表於 2012-10-18 13:28
| 只看該作者
回復 1# p6703
工作表是執行後新加上?
第一段是同時加上 "上午","下午" 兩份.
第二段是按當運行時時間加上- Sub ampm()
- Worksheets.Add
- ActiveSheet.Name = Format(Now(), "MM-DD") & "-上午"
- Worksheets.Add
- ActiveSheet.Name = Format(Now(), "MM-DD") & "-下午"
- End Sub
- Sub bytime()
- Worksheets.Add
- ActiveSheet.Name = Format(Now(), "MM-DD") & "-" & IIf(Hour(Now()) >= 12, "下午", "上午")
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
3#
發表於 2012-10-18 13:57
| 只看該作者
回復 1# p6703 - Sub Ex()
- ActiveSheet.Name = Format(Now(), "mmdd") & "-" & Mid(Format(Time(), "C"), 1, 2)
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
4#
發表於 2012-10-18 15:30
| 只看該作者
感謝二位版主的指導,小弟執行已可符合需求,但又有一延伸問題請教
因原執行時已產生一個1018-下午的工作表,當再次執行時即秀出錯誤(原工作表已有該名稱)
是否可將再次執行產生的工作表名稱依序增加格式為:1018-下午(2),1018-下午(3)....
再次感謝版主的教導,謝謝...^^ |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
5#
發表於 2012-10-18 16:48
| 只看該作者
回復 4# p6703
試試看- Option Explicit
- Sub EX()
- Dim xlName As String, Sh As Worksheet, i As Integer
- xlName = Format(Now(), "mmdd") & "-" & Mid(Format(Time(), "C"), 1, 2)
- On Error GoTo R:
- With Sheets.Add(, Sheets(Sheets.Count))
- ActiveSheet.Name = xlName
- End With
- R:
- If Err.Number <> 0 Then
- For Each Sh In Sheets
- If InStr(Sh.Name, xlName) Then i = i + 1
- Next
- xlName = xlName & "(" & i & ")"
- Err.Clear
- Resume
- End If
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
6#
發表於 2012-10-19 08:36
| 只看該作者
感謝GBKEE 版主,修改的確可如小弟告知的依序將同時段的工作表自動序號增加
但可能有點誤會小弟的意思了,小弟再說明一下
我指定的工作表是以其他的巨集執行產生的,可能就類似一個"新訂單"工作表,希望執行現請教的巨集後,即可將該工作表名稱自動變更成1018-下午形式,但當天可能又會再重新跑一次,又再產生一次新訂單工作表,如再按巨集執行時,名稱即變成1018-下午(1)(現執行巨集時是原工作表仍存在) |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
7#
發表於 2012-10-19 10:40
| 只看該作者
回復 6# p6703
所以要說明白的- Option Explicit
- Sub 新訂單()
- Dim xlName As String, Sh As Worksheet
- Dim Msg As Boolean
- xlName = Format(Now(), "mmdd") & "-" & Mid(Format(Time(), "C"), 1, 2)
- For Each Sh In Sheets
- If InStr(Sh.Name, xlName) Then Msg = True: Exit For
- Next
- If Msg = False Then '沒比對到
- Sheets.Add(, Sheets(Sheets.Count)).Name = xlName
- Else
- With Sh '比對到
- If Mid(.Name, 9) = "" Then '尚未有()
- .Name = .Name & "(1)"
- Else '已有()
- .Name = xlName & "(" & Val(Mid(.Name, 9)) + 1 & ")"
- End If
- End With
- End If
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
8#
發表於 2012-10-19 17:35
| 只看該作者
感謝GBKEE 版主立即的回覆,但小弟表達實在不佳,又讓GBKEE版主誤會
我想要的是當第一次執行巨集時,新訂單工作表--->1018-下午
當天可能會再有一次新工單工作表,當再次執行時,原1018-下午的工作表仍在,增加了新工作表1018-下午(2)
以此推類,也就是如果我當天執行三次巨集,就會產生三個工作表
==>1018-下午,1018-下午(2),1018-下午(3) |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
9#
發表於 2012-10-19 20:34
| 只看該作者
回復 8# p6703
再試試看- Option Explicit
- Sub 新訂單()
- Dim xlName As String, Sh As Worksheet
- Dim xMsg As Integer
- xlName = Format(Now(), "mmdd") & "-" & Mid(Format(Time(), "C"), 1, 2)
- For Each Sh In Sheets
- If InStr(Sh.Name, xlName) Then xMsg = xMsg + 1
- Next
- Sheets.Add(, Sheets(Sheets.Count)).Name = xlName & IIf(xMsg > 0, "(" & xMsg & ")", "")
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 134
- 主題
- 27
- 精華
- 0
- 積分
- 168
- 點名
- 0
- 作業系統
- WINXP
- 軟體版本
- EXCEL 2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 雲林
- 註冊時間
- 2010-10-6
- 最後登錄
- 2018-5-13

|
10#
發表於 2012-10-19 23:30
| 只看該作者
感謝GBKEE版主可以了^^..不過小弟在家測試時跑出的格式竟然是1019-23(-->此變成時間),我在公司跑的時候都是上下午的..待週一再到公司試試^^再次說聲謝謝啦^^ |
|
|
|
|
|
|