返回列表 上一主題 發帖

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

回復 24# GBKEE

訂購單.rar (14.38 KB)
已附上檔案
麻煩版主解決了:dizzy:

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

回復 7# GBKEE
不好意思 今天在做別的東西的時候發現
我用同樣的表格 改了幾個字 就完全不理我'了?
    Option Explicit
    Sub test()
        Dim arr, i As Integer
        Sheets("訂購記錄").UsedRange.Offset(1).Clear
        With Sheets("訂購單")
            For i = 8 To .[B16].End(xlUp).Row
                arr = Array(.[B5], .[D5], .[J5], .[B6], .Cells(i, "B"), .Cells(i, "A"), .Cells(i, "E"), .Cells(i, "F"), .Cells(i, "G"), .Cells(i, "H"), .Cells(i, "I"), .Cells(i, "J"))
                Sheets("訂購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr
            Next
        End With
    End Sub

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

報歉板主我是新手可以請教一下對這行程式不太了解  是到Sheets("採購記錄").然後從最後一列然後在arr內的內容貼上嗎Sheets("採購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr

TOP

回復 19# GBKEE
無論是 Option Base 1 或者是 Option Base 0,以儲存格為陣列條件
下的範例測試竟然會 Ignore Option Base 的宣告, 謝謝您的指導!

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

回復 13# GBKEE
我完全了解 #13 所說的 Option Base 正確使用方法了,
如果不宣告,Array 陣列是從 0 開始起算,所以 UBound(arr) 值會為 11,
反之、宣告 Option Base 1,則 Array 是從 1 開始起算,因此 UBound(arr) 值會為 12。
感謝您仔細地說明!

TOP

回復 16# GBKEE
太感激您了,我怎麼會沒想到 UBound(arr) 的問題,
發覺我霎那間智慧未能同時成長,謝謝呦!

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

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題