返回列表 上一主題 發帖

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

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

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

回復 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

回復 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

回復 24# GBKEE

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

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

回復 26# GBKEE

MsgBox .[B15].End(xlUp).Row      這段 加進去的話 跑起來只會顯示一段
後來我改成

    Option Explicit
        Sub TEST1()
            Dim arr, i As Integer
            With Sheets("訂購單")
                For i = 10 To Application.CountA(.[A10:A16]) + 9
                    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"))
                        
                    Sheets("訂購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr
                Next
            End With
        End Sub

不過備註欄跑不出來耶  是不是也要標柱 text?

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

回復 28# GBKEE
我了解了  真的非常謝謝版主
不過還有個問題想請教一下  如果要在  sheet 訂購記錄  那邊多加一欄
改成
Sheets("訂購記錄").Cells([B65536].End(3).Row + 1, 1).Resize(1, UBound(arr)) = arr

可是還是從A欄開始填?

TOP

回復 29# guaga
sheet 訂購記錄,那邊多加一欄:  這arr是你依Sheets("訂購記錄")欄位內容所指定的元素
你是要修正 這arr, 配合這 [多加一欄]
原本這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"))
Sheets("訂購記錄").Cells([A65536].End(3).Row + 1, 1).Resize(1, UBound(arr)+1) = arr

可是還是從A欄開始填? : Cells([A65536].End(3).Row + 1, 1) => Cells(列數, 欄數):   列數->數字 ,欄數->數字,字串-> 1="A"欄 ,2="B"欄 ,27="AA"欄
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題