標題:
[發問]
一開始能用,後來加了一張表格跟內建公式就亂了
[打印本頁]
作者:
Convulse
時間:
2015-12-2 09:11
標題:
一開始能用,後來加了一張表格跟內建公式就亂了
本帖最後由 Convulse 於 2015-12-2 09:14 編輯
本來寫了一個Macro 把63個表格的資料貼到一個表格
一開始跑是OK了
但是後來新增了一張表做計算,加了很多公式在裡面
再重跑VBA合併一次資料,就沒辦法抓到全部63個Sheet了, 就一直只能抓某幾個sheet(大概就4張)而已
照理來說新增那張計算的表格,還有裡面公式應該都跟VBA沒有關係( 因為沒有抓那張計算表格的資料),可是就一直抓不到資料:'(
研究了好久都還是不能抓回原本63個sheet裡的資料,想問問為什麼會這樣?
會是Code的問題嗎?那為什麼一開始跑能用呢?拿到原始還沒做計算的表格又可以跑?
附上我寫的程式碼
Sub Merge()
'
'
Sheets("summary").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
For x = 4 To 66
Sheets(x).Select
Application.ScreenUpdating = False
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("summary").Select
ActiveCell.Select
ActiveSheet.Paste
Range("A:A").End(xlDown).Select
ActiveCell.Offset(1, 0).Select
Next x
End Sub
麻煩大家幫幫忙了~~
作者:
n7822123
時間:
2015-12-2 12:13
本帖最後由 n7822123 於 2015-12-2 12:16 編輯
回復
1#
Convulse
你新增的表格有在前3個sheet之中嗎?
建議你附上檔案,說明你要做到的功能,我想有人會為你解答的,你的程式應該是用錄的再拼湊而成(非常多的select)。
作者:
Convulse
時間:
2015-12-2 14:58
謝謝樓上的回覆喔
我的檔案太大了 應該沒辦法貼上來
的確是用錄的再拚的(沒有辦法全部自己寫啊,哈哈)
我的新增表格在前面3個sheet裡沒錯 原始資料從第4張sheet到第66張
想要的功能是把第4張sheet到第66張的資料(每張sheet資料筆數不一樣)全部貼到summary(在第2個sheet)的頁面
然後再另外做一張表格計算summay裡的資料得到我要的答案(計算表格是sheet3)
當我在原始資料上做修改時,再跑次巨集
我修改了資料會再重新貼到summary 這張表 然後運算的表格會根據這張表的新資料
跑出新的且正確的我要的答案
不知道這樣解釋夠不夠清楚
是不是一定需要原始檔案
感謝大家啦
作者:
stillfish00
時間:
2015-12-2 15:40
回復
1#
Convulse
我看到這行關閉螢幕更新
Application.ScreenUpdating = False
是否最後有重新設為True
作者:
Convulse
時間:
2015-12-2 17:31
回復
4#
stillfish00
Hello ,
我加了Application.ScreenUpdating = True 在後面了
再重跑一次 確實看到跳到每一頁在運行
可以當跑完回到summary 的時候
又只看到總資料筆數 只有某幾個sheet裡的資料了 還是沒有全貼過來
作者:
n7822123
時間:
2015-12-2 23:45
回復
5#
Convulse
某幾頁的資料是否是只有最後幾頁的資料?如果是的話那應該是把前面的資料覆蓋了。
作者:
owen06
時間:
2015-12-3 08:30
回復
1#
Convulse
你要不要按F8一步一步執行看看,看問題是出在哪,然後再去想解決的辦法。
作者:
c_c_lai
時間:
2015-12-4 11:27
本帖最後由 c_c_lai 於 2015-12-4 11:28 編輯
回復
1#
Convulse
執行看看。
Sub Merge()
'
'
Sheets("summary").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
For x = 4 To 66
Sheets(x).Select
Application.ScreenUpdating = False
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("summary").Select
ActiveCell.Select
ActiveSheet.Paste
' Range("A:A").End(xlDown).Select ' Watch : ActiveCell.Address : "$A$1048576" : String
' ActiveCell.Offset(1, 0).Select ' Watch : <應用程式或物件定義上的錯誤> : Integer
' 依照妳撰寫方式修改成如下,試試看! (A 欄如為空值,.......,其位址 = "$A$1048576")
Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
Next x
End Sub
複製代碼
作者:
准提部林
時間:
2015-12-4 13:08
沒檔案, 沒真相, 要猜到幾時???
檔案太大, 可刪去部份再上傳!
作者:
c_c_lai
時間:
2015-12-5 08:44
回復
5#
Convulse
回復
9#
准提部林
說的也是,就如 准提部林 版主所言:
「檔案太大, 可刪去部份再上傳!」。
Miss Convulse,妳可將每一工作頁
的資料僅保留前幾項(列),然後再將
壓縮上傳。如此檔案上傳絕對 OK 的。
遙測不如實際演練!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)