返回列表 上一主題 發帖

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

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

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

TOP

本帖最後由 c_c_lai 於 2013-11-8 08:19 編輯

回復 7# GBKEE
請教您要如何處理 (程式 #7),如圖:

1. 採購日期、到貨日期 於匯入至 "採購記錄",如何能同時匯入 YYYYMMDD 型態;
2. B6:C6 兩欄 是 完整的 "廠商" 組合,要如同在廠商欄匯入時,帶入值能為 "A001 倫飛" (如圖);
3. "備註" (同時跨越 J、K、L 三欄) 資料為何無法匯入呢?
不好意思打攪您,在此先向您說聲謝謝。

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 僅能在模組裏出現一次,而且必須在含有維數的陣列宣告之前。
  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

回復 12# c_c_lai


1. 採購日期、到貨日期 於匯入至 "採購記錄",如何能同時匯入 YYYYMMDD 型態
我只知道 可以在你選取的儲存格 /右鍵/儲存格格式/數值-日期
選擇即可

TOP

回復 13# GBKEE
回復 14# guaga
應用 .[D5].Text (採購日期)、  .[J5].Text (到貨日期) 已經OK,
但是 "備註" 資料的匯入還是無法帶入, 改成 .Cells(i, "J").Text
結果一樣,麻煩您了,謝謝!

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

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

TOP

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

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

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

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題