如何通过InputBox根据单元格末尾数值规则删除Excel对应行
你当前代码中声明的AskNum变量未绑定InputBox输入逻辑,所以不会触发用户询问窗口,调整后的完整代码如下:
Sub DeleteRowsWithLastValue() Dim i As Long Dim LastRow As Long Dim AskNum As Variant Dim inputStr As String ' 弹出输入框获取用户指定的末尾匹配值 inputStr = InputBox("请输入要保留的B列单元格末尾数字:", "删除行规则配置") ' 处理用户取消或空输入的情况 If inputStr = "" Then MsgBox "已取消操作", vbInformation Exit Sub End If ' 校验输入是否为0-9的单个数字 If Not IsNumeric(inputStr) Or Len(inputStr) > 1 Or CInt(inputStr) < 0 Or CInt(inputStr) > 9 Then MsgBox "请输入0-9之间的单个数字", vbExclamation Exit Sub End If AskNum = CInt(inputStr) LastRow = Cells(Rows.Count, 2).End(xlUp).Row For i = LastRow To 6 Step -1 ' 替换固定匹配值为用户输入的数值 If Right(ActiveSheet.Range("B" & i), 1) <> CStr(AskNum) Then Rows(i).Delete End If Next i MsgBox "操作完成,已保留所有B列末尾为" & AskNum & "的行", vbInformation End Sub
主要调整说明
- 新增InputBox调用逻辑,支持用户自定义要匹配的末尾数字规则
- 增加输入合法性校验,避免非数字、超出0-9范围的输入引发程序报错
- 兼容用户点击取消的场景,不会出现异常运行问题
- 操作完成后增加结果提示,方便确认执行状态
如果你的需求是删除末尾等于输入值的行,把判断条件里的<>改成=即可。
内容的提问来源于stack exchange,提问作者Muneeb Hussain
相关产品推荐
相关产品推荐

