2017-06-01 326 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,因为它是一种更好的方法。 –