[問題] Excel VBA: Select case如何與陣列應用

看板Office作者 (阿暐)時間10年前 (2015/06/28 16:37), 10年前編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: Execl VBA 版本: 應該沒差,但我用的是Excel 2010 問題: 如何讓Select Case的條件是一個動態的陣列 參考檔案: https://drive.google.com/open?id=0B2QcJDcx2jDkbnplbW04amxFNkU&authuser=0 背景: 我希望得到的效果是,寫一個巨集, 使多個PivotTable的某個欄位瞬間只顯示某幾個值,而且這幾個值要是動態的 我的瓶頸: 我無法使PivotTable的某個欄位只顯示某幾個值,除非我把它寫在巨集裡 我資料: name gender Saving a m 12 b f 23 c f 25 d m 24 e m 65 f m 32 g f 12 h m 3 我用PivotTable顯示,name= "a" , "b", "c", "d"的人中 各gender的saving各總共有多少如下 (PivotTable Name="樞紐分析表1"): _________________________ |name |(多重項目) | |-----------|-------------| |列標籤 |加總 - Saving| |f |48 | |m |36 | |總計 |84 | |___________|_____________| 我寫的巨集如下: Sub 巨集1() For Each op In ActiveSheet.PivotTables("樞紐分析表1"). _ PivotFields("name").PivotItems On Error Resume Next Select Case op.Name Case "a" op.Visible = True Case "b" op.Visible = True Case "c" op.Visible = True Case "d" op.Visible = True Case Else op.Visible = False End Select Next op End Sub 我的問題: 這樣的寫法條件就一定要是寫在巨集裡面,要改很麻煩 我希望: 我可以把條件改成用陣列輸入 ex: ={"a","b","c","d"} 這樣我只要改陣列的內容就可以改pivottable,很方便 感謝大家撥冗看完我的文題,希望可以不吝指點一下我 我VBA幾乎是自學,很痛苦XD -- 【主功能表】 批踢踢實業坊 φjeans1020 ┼┼ ▂▃▄▄▄▄▃▂ 在那荒茫美麗馬勒戈壁有一群草泥馬 ﹏ ﹏ 他們活潑又聰明,他們調皮又靈敏 ▂▃▂ 他們自由自在生活在那草泥馬戈壁 ˙˙ :尸 他們頑強克服艱苦環境 ╯匕 __)(__ 噢~臥槽的草泥馬 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.74.78 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1435480628.A.626.html ※ 編輯: gg01 (111.250.74.78), 06/28/2015 16:42:01

06/28 17:05, , 1F
版本上還是有所差別的,例如寫的是2010後新增功能到2007以
06/28 17:05, 1F

06/28 17:05, , 2F
下版本執行就會出錯的可能
06/28 17:05, 2F

06/28 17:07, , 3F
另外on error resume next可不寫迴圈內,在on error goto
06/28 17:07, 3F

06/28 17:08, , 4F
0恢復前執行一次就可以
06/28 17:08, 4F

06/28 17:09, , 5F
上面想到的是用iff配合instr來改寫 https://goo.gl/VltGHA
06/28 17:09, 5F

06/28 17:11, , 6F
^^^打錯是iif
06/28 17:11, 6F

06/28 23:54, , 7F
感謝!!!茅塞頓開!!!!
06/28 23:54, 7F
文章代碼(AID): #1LZx8qOc (Office)