2013-01-22 82 views
0

我編寫了一個宏,它接收一些源數據並將其寫入多個表單,該表單在該宏運行之前和之後保持隱藏狀態。編寫完宏後,我運行它時只會更新每張表中的幾條記錄(例如,在第一個隱藏表中,它會從1000個以上更新21行。發生這種情況的原因是什麼?當然,它應該更新它們或?沒有人林沒有得到任何錯誤,要麼我用盡隱藏表格上的Excel/Visual Basic宏

Application.ScreenUpdating = False 
Worksheets("FT Raw").Visible = True 
Worksheets("L1").Visible = True 
Worksheets("L2").Visible = True 
Worksheets("L3").Visible = True 
Worksheets("L4").Visible = True 

但仍然只有21行得到更新

更新:這是在每張紙上運行的代碼

endval = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To endval 
    If Not Sheets("FT Raw").Cells(i, "A") = "" Then 
     splitted = Split(Sheets("FT Raw").Cells(i, "A"), ",") 
     Sheets("FT Raw").Cells(i, "B") = splitted(0) 
     Sheets("FT Raw").Cells(i, "C") = splitted(1) 
     Sheets("FT Raw").Cells(i, "D") = splitted(2) 
     If Sheets("FT Raw").Cells(i, "D") = "1" Then 
      Sheets("L1").Cells(j, "A") = Trim(splitted(0)) 
      Sheets("L1").Cells(j, "B") = Trim(splitted(3)) 
      j = j + 1 
     End If 
    End If 
Next i 
+1

我們需要查看更新工作表的代碼。通常也沒有必要讓這些表單可見。 – SWa

回答

1

確定編輯。您需要在endval calc中指定工作表(「FT Raw」)。

試試這個集合endval = Sheets("FT Raw").Cells(Sheets("FT Raw").Rows.Count, 1).End(xlUp).Row並繼續您的代碼的其餘部分。

(你也可以使用endval = Sheets("FT Raw").UsedRange.Rows.Count只有如果沒有空白單元格的列的頂部)

幸運最後,你不必在所有這些取消隱藏表來運行代碼。盡一切辦法來進行調試,但在怒氣中運行時並不是必需的。

+0

當運行未隱藏的表單時,完整的代碼功能完美無缺,一直計數到1000行。只有隱藏時,它會在20行後停止,這是什麼使我困惑。 – dojogeorge

+0

我懷疑這是因爲你在「FT Raw」中運行它時,它被隱藏了。您在「FT Raw」隱藏時正在運行的* active *工作表上有多少行? – CuberChase

+0

這似乎越來越接近,如果我運行與FT Raw未隱藏和L1/L2/L3/L4表隱藏然後它工作正常。以前活動工作表是一個數據透視表。有針對這個的解決方法嗎? – dojogeorge

0

這與隱藏牀單無關 - 即使是牀單是隱藏的,你仍然可以用VBA修改它。 (只有當它是受保護的,則需要取消保護它。)

Lookig你的代碼,我沒有看到,其中j初始化 - 以及在哪些情況列d在您的工作表FT raw等於"1"

我建議你在頂部初始化j,如果你想使用

 
j = Sheets("L1").Range(Rows.Count, 1).End.(xlUp).Row + 1 

然後,添加行與自動篩選運行在您的原始表的宏(支票),濾柱d的值1之後,看看是否條目的數量相匹配在表L1

+0

我之前在代碼中初始化它,我沒有把它放到原來的文章中,因爲我認爲它沒有必要顯示。列「D」在多個地方等於1,但似乎不涉及爲什麼只發現其中20個 – dojogeorge

+0

嘗試調試它然後:通過代碼F9並且如果跳過一行,請查看該值。或者,添加else語句'Else Debug.Print Sheets(「FT Raw」)。單元格(i,「D」)'查看跳過了什麼值。 –