返回列表 上一主題 發帖

[發問] 請問陣列該如何簡化

[發問] 請問陣列該如何簡化

各位大大好
我要陣列30個sheets 這樣打下去可能會很長...
請問以下該如何簡化
  1. Sub TEST()

  2. Dim x%

  3. Dim bx(30) As String
  4.    
  5.     For x = 1 To Sheets.Count
  6.       bx(x) = Sheets(x).Name
  7.     Next x
  8.    
  9.      If Sheets.Count = 2 Then Sheets(Array(bx(1), bx(2))).Select
  10.      If Sheets.Count = 3 Then Sheets(Array(bx(1), bx(2), bx(3))).Select
  11.      If Sheets.Count = 4 Then Sheets(Array(bx(1), bx(2), bx(3), bx(4))).Select
  12.      If Sheets.Count = 5 Then Sheets(Array(bx(1), bx(2), bx(3), bx(4), bx(5))).Select
  13.      If Sheets.Count = 6 Then Sheets(Array(bx(1), bx(2), bx(3), bx(4), bx(5), bx(6))).Select
  14.       .
  15.       .
  16.       .
  17.       .
  18.       .
  19.       .

  20.    
  21. End Sub
複製代碼

回復 1# alex520188
  1. Sub nn()
  2. Dim sh()
  3. For i = 1 To Sheets.Count
  4. ReDim Preserve sh(i - 1)
  5.   sh(i - 1) = Sheets(i).Name
  6. Next
  7. Sheets(sh).Select
  8. End Sub
複製代碼

TOP

回復 2# white945


    謝謝 white945 老師的指導
真的簡化好多
這一行 我不懂  ReDim Preserve sh(i - 1)
這句是什麼意思

TOP

sheets就是工作表陣列物件
選中所有工作表只須 :sheets.select 即可
1

評分人數

    • Hsieh: 頭腦清晰,沒被主題誤導金錢 + 2

TOP

回復 3# alex520188
ReDim 用來重新配置動態陣列變數的儲存空間。
Preserve 選擇性引數。當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字。

TOP

回復 4# chin15


    原來弄了一大串 只需要 sheets.select
   chin15 老師感謝你
   我又上了一課。

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題