可以限制行选择吗?

时间:2020-06-10 23:25:17

标签: excel vba

我试图制作一个按钮,以便使用vba从Excel的表格中删除仅一行,但是当我按下按钮并选择多于一行或很多单元格然后删除所有内容时,我想限制从E到I的选择(与行数无关) 这是我的代码,非常感谢,希望您能对我有所帮助,我还没有找到类似的东西。

Sub delete_a_row()
Dim variable As Range


 On Error GoTo local_err
     CONFIRM = MsgBox("do you wanna delete a row?", vbYesNo + vbExclamation, "delete row")
        If (CONFIRM = vbYes) Then

                Set variable = Application.InputBox("select a row", "delete row", , , , , , 8)
                Range(variable.Address).Select
                Selection.Delete Shift:=xlUp

        End If
local_err:
End Sub

我知道看起来有点混乱,很抱歉,我是VBA新手

2 个答案:

答案 0 :(得分:0)

如果您要删除的唯一内容是 E I 列,则:

Sub ytrewq()
    Dim variable As Range, rw As Long

    Set variable = Application.InputBox("select a row", "delete row", , , , , , 8)
    rw = variable(1).Row

    Range(Cells(rw, "E"), Cells(rw, "I")).Delete Shift:=xlUp
End Sub

此代码将仅从单行中删除单元格。

答案 1 :(得分:0)

有限的行选择

  • 以下内容将删除row中的第一个first range selectionEI列中(如果不连续)。
  • first range的意思是,如果您选择从行6开始的范围,然后按 CTRL 并选择从行2开始的另一个范围,然后 行6将被删除(请参见Range.Areas)。

代码

Option Explicit

Sub delete_a_row()
    Dim Confirm
    On Error GoTo local_err
    Confirm = MsgBox("do you wanna delete a row?", _
                     vbYesNo + vbExclamation, "delete row")
    If (Confirm = vbYes) Then
        Dim variable As Range
        On Error Resume Next
        Set variable = Application.InputBox("select a row", _
                                            "delete row", , , , , , 8)
        If Err.Number = 0 Then
            On Error GoTo local_err
            With variable
                Range(Cells(.Row, "E"), Cells(.Row, "I")).Delete Shift:=xlUp
            End With
        Else
            On Error GoTo local_err
            MsgBox "User cancelled."
        End If
    Else
        MsgBox "User selected No."
    End If
local_err:
End Sub
相关问题