我试图制作一个按钮,以便使用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新手
答案 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
selection
从E
到I
列中(如果不连续)。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