返回列表 上一主題 發帖

[發問] 請高人幫忙除錯,謝謝~

回復 43# 198188
Set Rng(1) = .[E1000].End(xlUp):  E1000開始往上檢查最後一列=> 如是 E999
Set Rng(1) = .[E1000].End(xlUp).Offset(, -4) => A999
那 A999 到 檔案底部 的列數是 2003-> 65536-999 +1
*********
Set Rng(2) = .Range(Rng(2), .[A2].End(xlDown))
A欄第二列開始往下到最後一筆範圍的列數 ?? 如大於 65536-999 +1
********** 複製的資料範圍>貼上位置的範圍 ?? 那多出的資料要擺哪裡 ??****

TOP

本帖最後由 GBKEE 於 2012-12-8 10:45 編輯

回復 46# 198188
41# 的錯誤在
  1.           Set Rng(2) = .[A2:L2]
  2.           Set Rng(2) = .Range(Rng(2), .[A2].End(xlDown))   'A欄沒資料 [A2].End(xlDown) 會到檔案底部
複製代碼
39# 已提醒你: 給你的程式碼要消化一下,VBA才會進步
  1.    
  2.           Set Rng(1) = .[E2]  'E欄資料有連續
  3.          '
  4.          '
  5.            Set Rng(2) = .[A2:L2]
  6.           ' **** Set Rng(2) = .Range(Rng(2), .[a2].End(xlDown))  ***** 這行不要用
  7.             Set Rng(2) = Rng(2).Resize(.[E1].End(xlDown).Row - 1)  
  8.            '[E1].End(xlDown) 到E欄有資料的地方會停止,才不會到檔案底部
  9.             Rng(2).copy Rng(1).Cells(1, -3)
複製代碼

TOP

回復 48# 198188
當我E欄中間有一列空白: 可由檔案底部往上
  1.     Set Rng(2) = Rng(2).Resize(.Cells(.Rows.Count, "E").End(xlUp).Row - 1)
  2.     Set Rng(2) = Rng(2).Resize(.Range("E" & .Rows.Count).End(xlUp).Row - 1)
複製代碼
回復 49# 198188
VBA 的說明
  1. Resize 屬性
  2. 請參閱套用至範例特定調整指定的範圍。傳回 Range 物件,該物件代表調整後的範圍。
  3. expression.Resize(RowSize, ColumnSize)
  4. expression     必選。該運算式傳回要調整大小的 Range 物件。
  5. RowSize     選擇性的 Variant。新範圍中所包含的列數。如果省略此引數,範圍中的列數保持不變。
  6. ColumnSize     選擇性的 Variant。新範圍中所包含的欄數。如果省略此引數,範圍中的欄數保持不變。
複製代碼
  1. For xi = 1 To 5
  2.         Set Rng(2) = Rng(2).Resize(xi)
  3.         MsgBox Rng(2).Address
  4.     Next
複製代碼

TOP

回復 52# 198188

   


如圖操作可方便他人複製程式碼
簡化你的程式碼
  1. Option Explicit
  2. Sub Ex()
  3.    Dim Rng(1 To 2) As Range, Files_AR(), E As Variant
  4.      Files_AR = Array("Connie.XLSX", "Lily.XLSX", "Jane.XLSX", "Jenny.XLSX")
  5.                                                                        '檔案名稱置入陣列:簡化程式的書寫
  6.      With Workbooks("payment.XLSM").Sheets("2012")
  7.         .Range("A2:L65536").ClearContents
  8.         .Range("A2:L65536").Interior.Color = xlNone
  9.         .Range("A1").CurrentRegion.Offset(1) = ""                       '清除A1連續範圍Offset(1):第一列以後連續範圍資料
  10.         For Each E In Files_AR                                          '迴圈取同一資料夾的檔案
  11.             Set Rng(1) = .Range("E" & .Rows.Count).End(xlUp).Offset(1)  'Offset(2)=> 本身算起如是E1-> E3
  12.             With Workbooks.Open("C:\Documents and Settings\USER\桌面\" & E).Sheets("SHEET1")
  13.                 Set Rng(2) = .[A2:L2]
  14.                 Set Rng(2) = Rng(2).Resize(.Range("E" & .Rows.Count).End(xlUp).Row - 1)
  15.                 Rng(2).Copy Rng(1).Cells(1, -3)
  16.                 .Parent.Close False
  17.             End With
  18.          Next
  19.     End With
  20. End Sub
複製代碼

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題