Excel如果所选单元格在范围内,则删除行

它是什么:我有一个部分列表,每个作业的变化。

我想要实现的是:如果选中的单元格不在列A中,那么msgbox提示用户“select部分#”然后只有在选定的单元格在范围内时才运行删除macrosA9:lastrow

为什么只有列A:如果我可以强制他们select列A中的单元格,那么我可以使用ActiveCell.Offset向msgbox添加信息,询问他们是否确定他们想要删除的信息,并包含其他单元格的信息他们select的部分#

第8行以上是标题,因此必须被locking。

我的每个零件#都有3行,这就是为什么我运行“EntireRow.Delete”3次。

这是我现在所拥有的。

Sub DeleteRow() If MsgBox("Are you sure you want to delete this part?" & vbNewLine & " " & vbNewLine & ActiveCell.Value & vbNewLine & ActiveCell.Offset(0, 1).Value & vbNewLine & "QTY: " & ActiveCell.Offset(0, 12).Value, vbYesNo) = vbNo Then Exit Sub If ActiveCell.Row > 8 Then Rows(ActiveCell.Row).EntireRow.Delete Rows(ActiveCell.Row).EntireRow.Delete Rows(ActiveCell.Row).EntireRow.Delete End If End Sub 

没有理由将活动单元格放在A列中,以便在MsgBox显示您希望的信息,如果这是您尝试限制ActiveCell的位置的唯一原因,那么您应该能够更改你的代码如下所示:

 Sub DeleteRow() If ActiveCell.Row <= 8 Then MsgBox "This macro should only be invoked if you are in a non-header row" ElseIf MsgBox("Are you sure you want to delete this part?" & vbNewLine & _ vbNewLine & _ ActiveCell.EntireRow.Cells(1, "A").Value & vbNewLine & _ ActiveCell.EntireRow.Cells(1, "B").Value & vbNewLine & _ "QTY: " & ActiveCell.EntireRow.Cells(1, "M").Value, _ vbYesNo) = vbYes Then ActiveCell.EntireRow.Delete ActiveCell.EntireRow.Delete ActiveCell.EntireRow.Delete End If End Sub 

以下@ YowE3K评论,也许我缺less你的文章中的东西,但我认为它应该是像下面的代码短。

如果用户select“ ”,则Exit Sub菜单的Exit Sub菜单,如果select“是”,则删除行。

 Sub DeleteRow() If ActiveCell.Row > 8 Then ' <-- first check if not above row 8 (headers) If MsgBox("Are you sure you want to delete this part?" & vbNewLine & " " & _ vbNewLine & ActiveCell.value & vbNewLine & ActiveCell.Offset(0, 1).value _ & vbNewLine & "QTY: " & ActiveCell.Offset(0, 12).value, vbYesNo) = vbYes Then ActiveCell.Resize(3, 1).EntireRow.Delete End If End If End Sub 

不知道你的问题究竟是什么(顺便说一句,你应该说明你的问题是在你的问题),我只能假设你想让用户select你的代码中的一部分,然后做某种在病房以后chekc。 看一下这个:

 Dim rNg As Range Set rNg = Application.InputBox("Select something", "Obtain Range Object", Type:=8) If target.address "something" then end if 

这应该让你去。

对于那些特别挑剔的人来说,没有更多的信息 – 我会删除,如果事实certificate我的答案是无关紧要的