sheets(i) and sheet1

各位大大,

不好意思, 小弟問題如下:

我有好幾個sheet, 從sheet1~sheet12, 但是每一個sheet擺在excel工作區內

的順序沒有按照順序排, 但是在屬性視窗內的名稱是按照順序排列的, 那我想

藉由for迴圈來跑, 但是因為沒按照順序排,會有問題.

如果寫法如下是ok的:

Sheet1.Select

Selection.QueryTable.Refresh BackgroundQuery:=False

Sheet2.Select

Selection.QueryTable.Refresh BackgroundQuery:=False

...etc

如果如下就會有問題:

For i = 1 To 4

Sheets(i).Select

Selection.QueryTable.Refresh BackgroundQuery:=False

Next

因為sheets(i).select是按照excel工作區的排列去走的, 但是我想要讓他按照我

程式工作區內的sheet1~sheet12順序來跑, 我該怎麼達到如下(在不自己動手改Excel工作區sheet的擺放順序時:

For i = 1 To 4

Sheets(i).Select

' i = 1時, sheets(i).select = sheet1.select

' i = 2時, sheets(i).select = sheet2.select

....etc

Next

Update:

To : 東邪大大,

Sheets("Sheet" & i).Select

sheet有兩個Name, 一個叫做sheet1 ~ sheet?

另外一個是我自己取的, ex: 要更新1, 常更新1, ...etc

我照你的方式key, 會造成陣列索引超出範圍.

請再幫忙想想辦法, 謝謝

Smith

Update 2:

To : 東邪大大,

感謝您的回答, 這樣的方法是第一次看到, 謝謝您

To: 准提部林

(1)

您的意見, 比較符合我的需求

(2)

commandbutton的active x按鈕, 按一下就會觸發去執行他條件的程序, 我可以再問一下, 如何不要按, 就可以觸發commandbutton內的條件程序???

PS : 我目前是把commandbutton的程序變成一個sub讓其他地方也可以共用他

2 Answers

Rating
  • 8 years ago
    Best Answer

    For i = 1 To 12

    Sheets("Sheet" & i).Select

    '這裡做你在該工作表要做的事

    Next i

    2011-07-31 18:12:43 補充:

    Dim SheetList As Variant, i As Integer

    SheetList = Array("要更新1", "要更新2", "常更新1", "常更新2", "備胎") '

    '上面的陣列內容依你要的順序排列,個數隨你意去安排

    For i = 0 To UBound(SheetList)

    Sheets(SheetList(i)).Select

    '這裡做你想做的事

    Next i

    2011-08-03 17:48:23 補充:

    面對一個傲慢自大的提問者,

    最好的應對方式便是 列入黑名單,拒絕往來!

  • 8 years ago

    僅供參考:如果不指定更新順序,且全部web查詢工作表都要更新,

    Sub TEST20110731()

    Dim xSht As Worksheet

    For Each xSht In ThisWorkbook.Sheets

    If xSht.QueryTables.Count > 0 Then

    xSht.Activate

    Selection.~~~

    End If

    Next

    End Sub

    2011-08-01 10:01:12 補充:

    (1)您的意見, 比較符合我的需求

    >東邪無弓大師的〔陣列〕指定工作表這招,一定要學起來,

     應用度高。大師難得在這分類作回答的!

    (2)不按觸發鍵鈕而執行巨集:

    >若是開檔時即執行,在OPEN事件中加入程式碼,或以call處理。

    >若是開啟檔案中,要自動執行,須用到Application.OnTime。

    2011-08-01 10:17:03 補充:

    將要更新的工作表名稱逐一輸入到東邪無弓大師的SheetList陣列中,

    再測試看看,可減少不必要的迴圈。

    反正這招一定要學起來,在以後VBA領域絕對用得到!

Still have questions? Get your answers by asking now.