2017-03-06 46 views
1

第一次張貼海報。我正在處理代碼,以便只有在列AH中的值大於零時纔將多個連續列粘貼到X行。但是,它將粘貼在每行中,而不是僅大於零的行。VBA粘貼不關注如果聲明

以下是我有:

Sub Fill_Down_MSP_Info() 

ActiveSheet.Range("E11:AD11").Select 
Selection.Copy 

For Each cell In ActiveSheet.Range("AH11:AH153") 
    If cell.Value > 0 Then 
     Dim example As Range 
     Set example = Range("AH11:AH153") 
     example.Offset(0, -29).Select 
     ActiveSheet.Paste 
    End If 
Next 

End Sub 

任何幫助表示讚賞。謝謝。

+0

您想要將該值粘貼在同一行中,還是列X中的下一個空插槽? –

+1

順便說一句我認爲你可以用一個簡單的公式來做到這一點。 –

+2

您正在複製整個範圍並將其粘貼到特定的單元格中,這無疑不是您打算執行的操作。你應該可以用公式來做到這一點,就像@ A.S.H提到的那樣,或者你可以修改這個代碼來完全避免使用「粘貼」方法。至少,您不應該複製循環外的全部數據範圍,並且隨後將全部範圍的數據粘貼到循環內的單個單元格中。 –

回答

0

如果您有意保持複製/粘貼的是,你可以在事後使用公式和刪除行不符合您的標準:如果您想更動態

Dim i as Integer 

For i = 153 to 11 Step -1 'Since your paste range is AH11:AH153 
    If Cells(i,34).Value<=0 Then 'AH is 34th column 
     Rows(i).Delete 
    End If 
Next i 

,你可以做一些與此類似:

Dim LR as Long 
Dim i as Integer 

LR = Cells(Sheets("REF").Rows.Count,1).End(xlUp).Row 

For i = LR to 11 Step -1 
    If Cells(i,34)<=0 Then 
     Rows(i).Delete 
    End If 
Next i 

此反向步驟將開始列的最後一排和倒退直到頂部,以不引起一個錯誤,當最後一行不斷變化的(之前定義它會在刪除行之後啓動循環)。