Board logo

標題: [發問] 一開始能用,後來加了一張表格跟內建公式就亂了 [打印本頁]

作者: 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
執行看看。
  1. Sub Merge()
  2. '
  3. '
  4.     Sheets("summary").Select
  5.     Range("A2").Select
  6.     Range(Selection, Selection.End(xlToRight)).Select
  7.     Range(Selection, Selection.End(xlDown)).Select
  8.     Selection.ClearContents
  9.     For x = 4 To 66
  10.         Sheets(x).Select
  11.         Application.ScreenUpdating = False
  12.         Range("A2").Select
  13.         Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
  14.         Application.CutCopyMode = False
  15.         Selection.Copy
  16.         Sheets("summary").Select
  17.         ActiveCell.Select
  18.         ActiveSheet.Paste
  19.         ' Range("A:A").End(xlDown).Select   ' Watch :  ActiveCell.Address : "$A$1048576" : String
  20.         ' ActiveCell.Offset(1, 0).Select    ' Watch :  <應用程式或物件定義上的錯誤> : Integer
  21.         ' 依照妳撰寫方式修改成如下,試試看! (A 欄如為空值,.......,其位址 = "$A$1048576")
  22.         Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
  23.    Next x
  24. 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/)