我想實現一個簡單的for-each是應該將數據從一個工作表(模板)複製到另一個(原始數據)語句,接着是另一個「潔淨up'for-each + If語句,該語句應該清除先前複製的所有單元格,除了具有預定義計算的5個單元格之外。Excel的VBA對於每個+ if語句的異常問題
我開始與-每個清除所有字段(和工作確定),不同的是後來我想,我需要一些字段的例外的事實陳述。所以,我添加了一個簡單的If語句,它指示Sub在沒有清除它的情況下轉到下一個單元格,以防這些特定的單元格區域出現。
運行的代碼時出於某種原因,它會清除,除了現場K15定義的範圍未包含在例外中的所有領域,我不知道爲什麼發生這種情況; __;我試過解決這個問題,但不能提出任何問題。
我的代碼粘貼下面。任何意見將不勝感激 - 包括任何改進代碼的提示。謝謝!
Sub CopyData()
Dim TargetRow, CopyRange, Cell As Range
Dim RowCount, ColumnCount, ColumnLast, ColC As Long
Dim ws As Worksheet
Application.ScreenUpdating = False
ColumnCount = 1
ColumnLast = 51
ColC = 1
Set ws = ThisWorkbook.ActiveSheet
Set CopyRange = Range("C10:C15,C17:C18,E12,E17:E18,K4:K6,K9,K11:K45")
Sheets("RawData").Activate
RowCount = Range("A1").CurrentRegion.Rows.Count + 1
Set TargetRow = Range(Cells(RowCount, ColumnCount), Cells(RowCount, ColumnLast))
For Each Cell In CopyRange
TargetRow.Cells(ColC).Value = Cell.Value
ColC = ColC + 1
Next Cell
ws.Activate
For Each Cell In CopyRange
If Cell = Range("K4") Or Cell = Range("K5") Or Cell = Range("K6") Or Cell = Range("K9") _
Or Cell = Range("K46") Then
GoTo Forward
Else
Cell.Value = ""
End If
Forward:
Next Cell
Application.ScreenUpdating = True
End Sub
你知道,'細胞=範圍(「K4」)'(等)是'Cell.Value = Range(「K4」)的縮寫。 If語句將每個單元格的值與其他各個單元格的值進行比較,而不是比較**地址**。 (我無法理解這個問題 - 早上太早了,我還沒有喝過早晨的咖啡 - 但是,如果這是問題,請使用'Cell.Address =「$ K $ 4」等)或者有兩個範圍 - 一個用於複製,一個用於清理(不包括那些你不想清理的範圍)。 – YowE3K
我沒有意識到!就是這樣,就像一個魅力,甜美的感謝! 如果您有任何其他建議,有什麼方法可以改善在這裏我最好比感激:-) – WAR
越多不使用保留字,或者是什麼樣子的保留字,變量名....細胞看起來像細胞,保留....使用Cel或myCell或rCell – jsotola