Board logo

標題: [發問] 請教vba ---- sheet1顯示各sheet部分欄位資訊 [打印本頁]

作者: smallpoper    時間: 2014-4-13 10:54     標題: 請教vba ---- sheet1顯示各sheet部分欄位資訊

請問一下 , 如果我有n個sheet而sheet(2)~sheets(n)的部分欄位資訊要顯示在sheet(1)...(資料如附件)
語法要怎麼寫
[attach]18001[/attach]
作者: GBKEE    時間: 2014-4-13 15:39

回復 1# smallpoper
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar(4) '陣列的索引值 0-4
  4.     With Sheets("Summary").[A8:J30]
  5.         .Cells = ""         '範圍的Cell
  6.         For i = 2 To Sheets.Count  '活頁簿上Summary這工作排在第一個,依序讀取後面的工作表
  7.             With Sheets(i)
  8.                 Ar = Array(.[B4], Split(.[B8], "#")(0), .[H5], .[E4], UBound(Split(.[E4], ",")) + 1)
  9.                 '需要的資料置於 陣列中
  10.             End With
  11.             .Cells(i - 1, 1).Resize(, 5) = Ar  '[A8:J30].Cells(列號1, 欄號)
  12.             'Resize(列數,欄數) (將原本範圍擴大 )
  13.         Next
  14.     End With
  15. End Sub
複製代碼

作者: smallpoper    時間: 2014-4-13 18:19

回復 2# GBKEE
請問這段代碼是什麼意思
Ar = Array(.[B4], Split(.[B8], "#")(0), .[H5], .[E4], UBound(Split(.[E4], ",")) + 1)
作者: GBKEE    時間: 2014-4-13 19:07

回復 3# smallpoper
  1. Ar = Array(.[B4], Split(.[B8], "#")(0), .[H5], .[E4], UBound(Split(.[E4], ",")) + 1)

  2. 'Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  3. 'Split(.[B8], "#") 將.[B8]的字串以"#"這字元 分割為一陣列

  4. 'UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
  5. 'Split(.[E4], ",")         -> 傳回一陣列
  6. 'UBound(Split(.[E4], ",")) -> 傳回這陣列可使用的陣列元素索引
  7. Option Base 語法 Option Base {0 | 1}
  8. Option Base 0 '陳述式在模組層次中用來宣告陣列元素索引的預設下限。
  9. '請注意 若預設的下限值為 0,則 Option Base 陳述式是不需要的
  10. '所以UBound(Split(.[E4], ",")) + 1 才是陣列真正的元素個數
複製代碼

作者: smallpoper    時間: 2014-4-13 20:47

回復 4# GBKEE

謝謝您的詳解 , 雖然現階段只是入門還不太懂 , 來去研究研究整段代碼 . 再次感謝您:)




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