Trending News
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
To : 東邪大大,
Sheets("Sheet" & i).Select
sheet有兩個Name, 一個叫做sheet1 ~ sheet?
另外一個是我自己取的, ex: 要更新1, 常更新1, ...etc
我照你的方式key, 會造成陣列索引超出範圍.
請再幫忙想想辦法, 謝謝
Smith
To : 東邪大大,
感謝您的回答, 這樣的方法是第一次看到, 謝謝您
To: 准提部林
(1)
您的意見, 比較符合我的需求
(2)
commandbutton的active x按鈕, 按一下就會觸發去執行他條件的程序, 我可以再問一下, 如何不要按, 就可以觸發commandbutton內的條件程序???
PS : 我目前是把commandbutton的程序變成一個sub讓其他地方也可以共用他
2 Answers
- 東邪無弓Lv 710 years agoFavorite 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 補充:
面對一個傲慢自大的提問者,
最好的應對方式便是 列入黑名單,拒絕往來!
- 准提部林Lv 710 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領域絕對用得到!