返回列表 上一主題 發帖

[發問] 如何將"採購單"內容依序寫入另一個sheet?

回復 6# guaga
  1. Option Explicit
  2. Sub test()
  3.     Dim arr, i As Integer
  4.     Sheets("採購記錄").UsedRange.Offset(1).Clear
  5.     With Sheets("採購單")
  6.         For i = 10 To .[B30].End(xlUp).Row
  7.             arr = Array(.[B5], .[D5], .[J5], .[B6], .Cells(i, "B"), .Cells(i, "D"), .Cells(i, "E"), .Cells(i, "F"), .Cells(i, "G"), .Cells(i, "H"), .Cells(i, "I"), .Cells(i, "J"))
  8.             Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr
  9.         Next
  10.     End With
  11. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# guaga
這行程式碼駐解掉
  1. 'Sheets("採購記錄").UsedRange.Offset(1).Clear
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 10# guaga
4#的檔案嗎?

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-11-8 08:33 編輯

回復 12# c_c_lai
  1. Option Base 陳述式
  2. 在模組層次中用來宣告陣列索引的預設下限。
  3. 語法
  4. Option Base {0 | 1}
  5. 請注意
  6. 若預設的下限值為 0,則 Option Base 陳述式是不需要的。若需要使用時,此陳述式必須出現在模組中,並且在任何程序之前。Option Base 僅能在模組�堨X現一次,而且必須在含有維數的陣列宣告之前。
  7. 附註 在 Dim、Private、Public、ReDim 和 Static 陳述式中,To 子句提供較具彈性的方法,來控制陣列索引的範圍。然而,如果不使用 To 子句來明確的設定下限,則可用 Option Base 來改變預設值的下限為 1。Array 函數所建立的陣列預設下限必為零,不受 Option Base 所影響。
  8. Option Base 陳述式只影響它所在的模組�堣妍}列的下限。
複製代碼
  1. Option Explicit
  2. Sub test()
  3.     Dim arr, i As Integer
  4.     Sheets("採購記錄").UsedRange.Offset(1).Clear
  5.     With Sheets("採購單")
  6.         For i = 10 To .[B30].End(xlUp).Row
  7.             arr = Array(.[B5], .[D5].Text, .[J5], .[B6] & .[c6], .Cells(i, "B"), .Cells(i, "D"), .Cells(i, "E"), .Cells(i, "F"), .Cells(i, "G"), .Cells(i, "H"), .Cells(i, "I"), .Cells(i, "J"))
  8.             Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr) + 1) = arr
  9.         Next
  10.     End With
  11. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 15# c_c_lai
  1. Option Explicit
  2. Sub test()
  3.     Dim arr, i As Integer
  4.     Sheets("採購記錄").UsedRange.Offset(1).Clear
  5.     With Sheets("採購單")
  6.         For i = 10 To .[B30].End(xlUp).Row
  7.             arr = Array(.[B5], .[D5].Text, .[J5], .[B6] & .[c6], .Cells(i, "B"), .Cells(i, "D"), .Cells(i, "E"), .Cells(i, "F"), .Cells(i, "G"), .Cells
  8. (i, "H"), .Cells(i, "I"), .Cells(i, "J"))
  9. '******* .Cells(i, "B")  這不也是合併BC兩欄 ****************
  10.             Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr) + 1) = arr
  11.                        '*************UBound(arr) + 1 應可顯示 .Cells(i, "J")的資料  ********************
  12.         Next
  13.     End With
  14. End Sub
複製代碼
  1. Option Explicit
  2. Option Base 1
  3. Sub Ex()
  4.     Dim AR, S
  5.     S = "S,S,S"
  6.     S = Split(S, ",")
  7.     MsgBox UBound(S)
  8.     MsgBox LBound(S)
  9.     AR = Array(5, 6)
  10.     MsgBox UBound(AR)
  11.     MsgBox LBound(AR)
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 18# c_c_lai
  1. Option Explicit
  2. Option Base 0   '的例外
  3. Sub Ex()
  4.     Dim Ar(5 To 10), Br()
  5.     MsgBox UBound(Ar)
  6.     MsgBox LBound(Ar)
  7.     Br = [b3:c5].Value    '以儲存格為陣列
  8.     MsgBox UBound(Br)
  9.     MsgBox LBound(Br)
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 21# hu0318s
Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr

[A65536].End(3).Row-> 由A65536往上到第1個有資料的列號(.Row)
Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1)-> Sheets("採購記錄").Cells(列號,欄號)   

Resize 方法:  調整指定的範圍。傳回 Range 物件,該物件代表調整後的範圍。
UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引 (等同計算陣列某維元素的數量)
例 Sheets("採購記錄").Cells(1,1).Resize(1,10)->調整後的範圍: A1:J1=arr
    Sheets("採購記錄").Cells(3,2).Resize(1,10)->調整後的範圍: B3:K3=arr
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 23# guaga
  1. With Sheets("訂購單")
  2.              MsgBox  .[B16].End(xlUp).Row  '如果<8 For : Not Work  
  3.             For i = 8 To .[B16].End(xlUp).Row
複製代碼
如不是附檔看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 25# guaga
請在你附檔上試試看
  1. Option Explicit
  2.     Sub TEST1()
  3.         Dim arr, i As Integer
  4.         With Sheets("訂購單")
  5.         MsgBox .[B15].End(xlUp).Row                             '因A欄,B欄 是合併的儲存格,B欄是空白的
  6.         MsgBox .[A17].End(xlUp).Row                             '如圖示 .[A10:A16] 都有資料 =>10
  7.             For i = 10 To Application.CountA(.[A10:A16]) + 9    'CountA : 計算[A10:A16]的資料數(資料一定要是連續的)
  8.                 arr = Array(.[L4], .[N4], .[L7].Text, .Cells(i, "A"), .Cells(i, "C"), .Cells(i, "E"), .Cells(i, "H"), .Cells(i, "I"), .Cells(i, "J"), .Cells(i, "L"))
  9.                     '.[L7]資料日期,是數字,.[L7].Text 可傳回日期的格式
  10.                 Sheets("訂購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr
  11.             Next
  12.         End With
  13.     End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 27# guaga
例 AR(0 TO 10) 這陣列共有11個元素 :  陣列下限索引值=0  , 陣列上限索引值=10  
UBound(arr): UBound傳回陣列上限索引值
  1. Option Explicit
  2. Sub TEST1()
  3.     Dim arr, i As Integer
  4.     With Sheets("訂購單")
  5.         For i = 10 To Application.CountA(.[A10:A16]) + 9
  6.             arr = Array(.[L4], .[N4], .[L7].Text, .Cells(i, "A"), .Cells(i, "C"), .Cells(i, "E"), .Cells(i, "H"), .Cells(i, "I"), "=RC[-1]*RC[-2]", .Cells(i, "J"), .Cells(i, "L"))
  7.             Sheets("訂購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr) + 1) = arr
  8.         Next
  9.     End With
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題