首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理Excel中的“13”错误(西班牙语中的变量和文本)

处理Excel中的“13”错误(西班牙语中的变量和文本)
EN

Stack Overflow用户
提问于 2020-02-20 16:34:53
回答 2查看 63关注 0票数 1

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

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

如果用户编写Int,宏运行OK (我不知道如何优化它)。但是当用户写不同的东西时,宏就崩溃了。

我希望有一个MsgBox弹出,上面写着“请输入一个有效的数字”,每当用户写任何不同的东西。

到目前为止,这是我的代码

代码语言:javascript
复制
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

我真的很困惑如何处理这个错误。

提前谢谢你,

詹姆

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-20 16:56:38

处理此要求的最干净的方法是不允许输入除数字数字以外的任何内容。您可以通过响应KeyPress事件来做到这一点:

代码语言:javascript
复制
Private Sub TextFila_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'allow only numeric digits and the backspace key
   If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then KeyAscii = 0
End Sub

这种方法还允许您简化按钮单击事件中的逻辑。

票数 4
EN

Stack Overflow用户

发布于 2020-02-20 16:55:56

编辑:、Mathieu和Brian关于最干净的方法是正确的。将留下我的答案作为一个例子。

不需要用户表单。

你可以直接用一个输入箱来做。

阅读代码的注释,并调整它以满足您的需要。

代码语言:javascript
复制
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

如果能用,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60324641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档