iT邦幫忙

0

EXCEL VBA 開啟數字編號之工作表

一EXCEL檔(一) 約有35個工作表
其中31個工作表名稱為01,02,03....31
請問要如何依序開啟每一工作表
試寫了一段 當i >= 10時, 就選錯工作表
For i = 1 To 31
k = i
If i < 10 Then k = "0" & i
Worksheets(k).Select
執行程序
next i
請問要如何修正
另一EXCEL檔案(二)
共約30-51工作表
有一工作表(All)在C欄有每一工作表之名稱(C2向下開始, 均為4碼數字)
for iCnt= 2 to xxx 'xxx為C欄最後一列之列號
'iCnt為列號,用來控制依序開啟工作表
ShtNam = Worksheets("All").Cells(iCnt, 3).Value
Worksheets(ShtNam).Select
執行程序
next iCnt
也會出現錯誤
請問當工作表名稱為數字時, 要如何依序開啟

jasonh iT邦新手 5 級 ‧ 2019-03-19 08:53:19 檢舉
請問 Tex t與 Format 與 NumberFormatLocal 使用上有何不同
(錄巨集更改格式為"00"時, 都是用 NumberFormatLocal ? 要如何用? )
(好像還有一個 NumberFormat ? 又要如何用? )
另若工作表名稱是2到5碼數字, 是Format再加 if 及 Len 寫程式嗎
Format是VB的函數,TEXT是EXCEL工作表函數,兩者的功能與用法都差不多。
NumberFormatLocal是Range的一個屬性,用來設定數字所呈現的格式。
工作表名稱若是2到5碼數字,你可以試試看Format(Input, "###00")

更多Format的用法請參考:https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/format-function-visual-basic-for-applications
jasonh iT邦新手 5 級 ‧ 2019-03-19 15:40:56 檢舉
感謝

1 個回答

1
paicheng0111
iT邦高手 1 級 ‧ 2019-03-19 00:07:09
最佳解答
For i = 1 To 31
    k = i
    If i < 10 Then k = "0" & i
    Worksheets(k).Select
    執行程序
next i

可以改為試試看

For i = 1 To 31
    Worksheets(format(i, "00")).Select
    執行程序
next i

=================

for iCnt= 2 to xxx 'xxx為C欄最後一列之列號
    'iCnt為列號,用來控制依序開啟工作表
    ShtNam = Worksheets("All").Cells(iCnt, 3).Value
    Worksheets(ShtNam).Select
    執行程序
next iCnt

改為

For icnt =2 to xxx
    ShtNam = Worksheets("All").Cells(iCnt, 3).Value
    Worksheets(format(shtnam,"0000")).select
    執行程序
next icnt

我要發表回答

立即登入回答