Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 删除空行,然后在列值之前添加行_Vba_Excel - Fatal编程技术网

Vba 删除空行,然后在列值之前添加行

Vba 删除空行,然后在列值之前添加行,vba,excel,Vba,Excel,我是新来的,已经绞尽脑汁想了大约一个星期,想弄明白这一点。我也到处搜索,我试图解决问题的每一个例子都不起作用。所以,我很抱歉,如果这是在这里的某个地方,但找不到它 我的德莱玛,我有一个计算机生成的电子表格,可以在Excel中创建2000多行。一半是空白行。我的目标是删除所有空行,如果列“n”的值为Y或n,则在前面插入一行 我已经删除了空白行,但是在基于值添加行时我正在挣扎。任何帮助都将不胜感激 将第一个例程的逻辑与第二个例程的逻辑相结合(未测试代码) 请注意,您应该远离Selection和A

我是新来的,已经绞尽脑汁想了大约一个星期,想弄明白这一点。我也到处搜索,我试图解决问题的每一个例子都不起作用。所以,我很抱歉,如果这是在这里的某个地方,但找不到它

我的德莱玛,我有一个计算机生成的电子表格,可以在Excel中创建2000多行。一半是空白行。我的目标是删除所有空行,如果列“n”的值为Y或n,则在前面插入一行

<>我已经删除了空白行,但是在基于值添加行时我正在挣扎。任何帮助都将不胜感激




将第一个例程的逻辑与第二个例程的逻辑相结合(未测试代码)


请注意,您应该远离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