我正在创建一个宏来帮助用户通过textBox删除一行。用户需要点击消除哈拉齐戈(删除查找)按钮。

然后,会出现一个带有空文本框的窗体,供用户写入将要删除的行号。

如果用户编写Int,宏运行OK (我不知道如何优化它)。但是当用户写不同的东西时,宏就崩溃了。
我希望有一个MsgBox弹出,上面写着“请输入一个有效的数字”,每当用户写任何不同的东西。
到目前为止,这是我的代码
Private Sub AceptarButton_Click()
Dim row2Empty As Integer, rangoDel As Range
' Asignar valor escrito por usuario a Variable
row2Empty = TextFila.Value
On Error GoTo InvalidValue:
Exit Sub
Worksheets(5).Activate
If TextFila.Value = True Then
Worksheets(5).Rows(row2Empty).Select
Worksheets(5).Rows(row2Empty).Delete
End If
Unload Me
InvalidValue:
MsgBox "Por favor digite un numero."
Resume Next
End Sub我真的很困惑如何处理这个错误。
提前谢谢你,
詹姆
发布于 2020-02-20 16:55:56
编辑:、Mathieu和Brian关于最干净的方法是正确的。将留下我的答案作为一个例子。
不需要用户表单。
你可以直接用一个输入箱来做。
阅读代码的注释,并调整它以满足您的需要。
Private Sub AceptarButton_Click()
Dim targetSheet As Worksheet
Dim row2Delete As Variant
Dim range2Delete As Range
' Define the target sheet where row is going to be deleted
Set targetSheet = ThisWorkbook.Worksheets(1)
' Loop until enter a valid number or cancel
Do While True
' Get user value
row2Delete = InputBox("Por favor indique cuál es la fila a eliminar", "Confirmar fila a eliminar")
' Check
Select Case True
Case StrPtr(row2Delete) = 0
' User canceled
Exit Sub
Case Not IsNumeric(row2Delete)
' Not a number, alert and ask again
MsgBox "Por favor digite un numero."
Case IsNumeric(row2Delete)
' Is a number, continue
Exit Do
End Select
Loop
' Delete row in sheet index = 5
targetSheet.Rows(row2Delete).Delete
End Sub如果能用,请告诉我。
https://stackoverflow.com/questions/60324641
复制相似问题