我提示的代码弹出窗口,要求删除哪一行,不幸的是,当我按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
答案 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