返回列表 上一主題 發帖

[發問] 活頁簿能用陣列同時隱藏或出現嗎?

[發問] 活頁簿能用陣列同時隱藏或出現嗎?

Sheets(“aa”).Visible=False
Sheets(“av”).Visible=False
Sheets(“ca”).Visible=False

因為想要同時隱藏,因為活頁簿有很多個
這樣會導致程式碼太長,不知是否能用陣列方式呈現隱藏及出現的功能

本帖最後由 c_c_lai 於 2016-5-1 15:51 編輯

回復 1# feecshyrnd
  1. Option Explicit

  2. Sub Ex()
  3.     Dim arr As Variant, cts As Integer, j As Integer
  4.    
  5.     arr = Array("工作表2", "工作表3")
  6.    
  7.     For cts = 1 To Sheets.Count
  8.         For j = 0 To UBound(arr)
  9.             If Sheets(cts).Name = arr(j) Then Sheets(cts).Visible = _
  10.                 Not Sheets(cts).Visible
  11.         Next j
  12.     Next cts
  13. End Sub
複製代碼

TOP

我也來練習補充一個
  1. Sub ex1()
  2.     Dim Arr As Variant, xS
  3.     Arr = Array("Sheet2", "Sheet3", "Sheet4")
  4.     On Error Resume Next
  5.     For Each xS In Arr
  6.         Sheets(xS).Visible = Not Sheets(xS).Visible
  7.     Next
  8. End Sub
複製代碼
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 3# ML089
不錯,直接了斷乾淨俐落。受教了!

TOP

回復 3# ML089


這要三表同時狀態才行,
若是 1,0,1 執行後 0,1,0 還是有一張未隱藏!
不然就以第一張表為依據來判斷!!!

TOP

回復 5# 准提部林
你的意思是:
  1. Sub Ex2()
  2.     Dim arr As Variant, xS As Variant
  3.     Static tf As Boolean
  4.    
  5.     tf = Not tf
  6.     arr = Array("工作表2", "工作表3", "工作表4")
  7.     On Error Resume Next
  8.     For Each xS In arr
  9.         '  Sheets(xS).Visible = Not Sheets(xS).Visible
  10.         Sheets(xS).Visible = tf
  11.     Next
  12. End Sub
複製代碼

TOP

回復 5# 准提部林

准大考慮周詳,請給我們一個示範例。
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 6# c_c_lai


ARR = Array("工作表2", "工作表3", "工作表4")
TF = 1 + Sheets(ARR(0)).Visible
For Each xS In ARR
  Sheets(xS).Visible = TF
Next

TOP

回復 6# c_c_lai

真厲害!
又學到  Static tf As Boolean
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 8# 准提部林

3Q

下兩式的計算值有些不同,都可以達到 隱藏/顯示 的切換
    tf = Not Sheets(arr(0)).Visible '值變化 : 0 / -1
    tf = 1 + Sheets(arr(0)).Visible  '值變化 : 0 / 1
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題