Vba 删除空行,然后在列值之前添加行
我是新来的,已经绞尽脑汁想了大约一个星期,想弄明白这一点。我也到处搜索,我试图解决问题的每一个例子都不起作用。所以,我很抱歉,如果这是在这里的某个地方,但找不到它 我的德莱玛,我有一个计算机生成的电子表格,可以在Excel中创建2000多行。一半是空白行。我的目标是删除所有空行,如果列“n”的值为Y或n,则在前面插入一行 <>我已经删除了空白行,但是在基于值添加行时我正在挣扎。任何帮助都将不胜感激Vba 删除空行,然后在列值之前添加行,vba,excel,Vba,Excel,我是新来的,已经绞尽脑汁想了大约一个星期,想弄明白这一点。我也到处搜索,我试图解决问题的每一个例子都不起作用。所以,我很抱歉,如果这是在这里的某个地方,但找不到它 我的德莱玛,我有一个计算机生成的电子表格,可以在Excel中创建2000多行。一半是空白行。我的目标是删除所有空行,如果列“n”的值为Y或n,则在前面插入一行 我已经删除了空白行,但是在基于值添加行时我正在挣扎。任何帮助都将不胜感激 将第一个例程的逻辑与第二个例程的逻辑相结合(未测试代码) 请注意,您应该远离Selection和A
将第一个例程的逻辑与第二个例程的逻辑相结合(未测试代码)
请注意,您应该远离Selection和ActiveCell。请参阅。第一件事:在您的
Sub InsertRow()
中放置If ActiveCell=“n”然后
在y内。您忘记在错误转到0时添加。
在代码末尾删除空行,但不添加行。您可能需要将y/N列的常量列从10更新为任意列号。因此,如果您的Y/N列位于C列中,则列号为3。像往常一样,如果有什么不太好的地方,请逐步检查代码。祝你好运
Sub DeleteBlankRows()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xRows = WorkRng.Rows.Count
Application.ScreenUpdating = False
For i = xRows To 1 Step -1
If Application.WorksheetFunction.CountA(WorkRng.Rows(i)) = 0 Then
WorkRng.Rows(i).EntireRow.Delete XlDeleteShiftDirection.xlShiftUp
End If
Next
Application.ScreenUpdating = True
End Sub
Sub InsertRow()
If ActiveCell = "y" Then
Selection.EntireRow.Insert
If ActiveCell = "n" Then
Selection.EntireRow.Insert
End If
End If
End Sub
Sub DeleteBlankRows()
Const COLUMN_TO_CHECK_FOR_Y_N = 10&
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
xRows = WorkRng.Rows.Count
Application.ScreenUpdating = False
' Delete Rows
For i = xRows To 1 Step -1
If Application.WorksheetFunction.CountA(WorkRng.Rows(i)) = 0 Then
WorkRng.Rows(i).EntireRow.Delete XlDeleteShiftDirection.xlShiftUp
End If
Next
' Add Rows
For i = xRows To 1 Step -1
If WorkRng.Cells(i, COLUMN_TO_CHECK_FOR_Y_N) = "N" Then
WorkRng.Rows(i).Insert
End If
Next
Application.ScreenUpdating = True
End Sub