請教VBA裡for each in 的使用方法

恩..很久前有用過,但久沒用這函式瞬間給茫了..
查了下又發現我怎麼好像連工作表的語法也有點模糊了..
只好再次來請教一二..望各位能不吝幫忙解答..先說聲感謝

主要要用的語法是,
我想用for each in sheets裡去檢查該工作簿內所有工作表裡.
是否有某工作表名稱的存在..
一般的寫法如下…
for i = 1 to sheets(sheets.count)
if sheets(i)="A計劃" then
sheets("A計劃").select
else:sheets.add after:=sheets(sheets.count)
endif
next

恩...那如果我想改用for each in ....next要如何撰寫咧?
(PS:剛試了下,上頭的語法好像有誤,因沒什麼睡腦子一片亂..晚些我有空再改改)
這裡純請教for each in 的改寫法..再次感謝
2022-10-27 14:30 發佈
For Each sh In allSheets
'do something
Next sh



你的例子的話Next i就可以了
風~~
MaverickRay
MaverickRay 樓主

所以若要比照所有工作表,是只要用allSheets 這樣就可嗎?因我第一次看到這語法,還在想是要怎麼用,如:sheets(sheets.count)..但總感覺好像只能比到最後一個工作表而已.

2022-10-28 3:35
MaverickRay wrote:
恩..很久前有用過,...(恕刪)

For Each 用法:
For Each 迭代變數 In 陣列
運算內容
Next 迭代變數

'範例:
Sub Worksheet_loop()
Dim Sheets_ As Worksheet
For Each Sheets_ In Worksheets
MsgBox Sheets_.Name
Next Sheets_
End Sub
MaverickRay
MaverickRay 樓主

同樓上回覆一樣,所以若我要比照所有工作表,是只要在for each的最後,打入in worksheets,或in sheets就可嗎?因我實在忘了for each in ....要抽時間去復習才行.

2022-10-28 3:38
範例跑一次就知道了,Sheets_就是迭代變數,也代表你的某個工作表,Worksheets是陣列,表示你全部的工作表。
For Each Sheets_ In Worksheets '在Worksheets(所有工作表陣列)中逐一查看Sheets_ (單一個工作表)
MsgBox Sheets_.Name '目前查找到陣列中的工作簿名稱
Next Sheets_ '應該不用多解釋

執行結果:
顯示訊息視窗內容為工作簿名稱,你有幾個工作表就顯示幾個訊息視窗

網路上很多資料可以查的:For Each...Next 陳述式 (Visual Basic)
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?