通过单选按钮删除多个选定的行

时间:2019-03-08 18:49:12

标签: excel vba

我提示的代码弹出窗口,要求删除哪一行,不幸的是,当我按Escape键或Cancel键时,工作表上处于活动状态的单元格都会被删除。

我正在寻找的功能是,如果我按键盘上的Escape键或弹出窗口中的“ x”键,则不会删除该行

这是我到目前为止所拥有的:

Sub DeleteRow()
    Dim rng As Range
    Dim iRowCount As Integer
    Dim iForCount As Integer

    On Error Resume Next

    Set selectedRng = Application.Selection
    Set selectedRng = Application.InputBox("Range", , selectedRng.Address, Type:=8)

    iRowCount = selectedRng.Rows.Count
    For iForCount = iRowCount To 1 Step -1
    If Application.WorksheetFunction.CountA(selectedRng.Rows(iForCount)) = 0 Then
    selectedRng.Rows(iForCount).EntireRow.Delete
    selectedRnd.Rows(iForCount).Delete
    End If
    Next

    Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:0)

InputBox函数返回一个字符串,因此当用户取消输入框时,将仅跳过使用SET将结果分配给您的selectedRng变量(尚未声明,因此将被视为变体)。因此,该变量将继续保存您在上一行中为其分配的Application.Selection。

如果用户单击“取消”或“ X”或单击“转义”,则输入框将返回“ False”。

我会尝试声明一个字符串变量以捕获输入结果,如

dim strResult as string

strResult = Application.InputBox("Range", , selectedRng.Address)
if strResult <> "False" then
   set selectedRng = Range(strResult)
  'delete the rows now...
end if