2017-06-01 31 views
0
Sub Macro6() 

Dim rngW As Range 
Dim cell As Range 

Set rngW = Range("W1", Range("W65536").End(xlUp)) 
For Each cell In rngW 
If cell.Value = "Y" Then 

Rows.Select 
Range.Activate 
Selection.Insert Shift:=xlDown 


End Sub 

我想在我W在整個Excel表中找到的W列中的每個「Y」上面添加一個空行。這將幫助我分離大塊數據。我不斷收到「編譯錯誤:參數不可選」。是什麼賦予了?VBA函數 - 參數不可選(分離文本塊)

+1

你缺少了'結束If'和'接下來cell' –

回答

2

正如Scott Craner指出的,您錯過了關於IfNext的結算報表。

另外,插入或刪除行時,您需要向後循環遍歷行集。

見下面的代碼:

Sub Macro6() 

Dim lRow as Long 
lRow = Range("W" & Rows.Count).End(xlUp).Row 

Dim i as Long 

For i = lRow to 1 Step -1 

    if Range("W" & i).Value = "Y" Then Range("W" & i).EntireRow.Insert Shift:=xlDown 

Next 

End Sub 
+1

我是二秒內從提交幾乎同樣的事情。 –

+0

唯一的區別是我把'With ActiveSheet'放在父文件夾中,並使用'Rows.Count'而不是硬編碼的行。 –

+1

@ScottCraner - 兩個賬戶的公平點。我不想調整太多!取決於我回答問題的深度。我改變了Rows.Count,因爲它是一種更好的方法。 –