Board logo

標題: [發問] 請問陣列該如何簡化 [打印本頁]

作者: alex520188    時間: 2012-8-17 23:52     標題: 請問陣列該如何簡化

各位大大好
我要陣列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
複製代碼

作者: white945    時間: 2012-8-18 00:06

回復 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
複製代碼

作者: alex520188    時間: 2012-8-18 00:55

回復 2# white945


    謝謝 white945 老師的指導
真的簡化好多
這一行 我不懂  ReDim Preserve sh(i - 1)
這句是什麼意思
作者: chin15    時間: 2012-8-18 07:27

sheets就是工作表陣列物件
選中所有工作表只須 :sheets.select 即可
作者: c_c_lai    時間: 2012-8-18 07:56

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

回復 4# chin15


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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)