我需要显示一个MsgBox说:“请选择最多8个数据。”当用户在工作表中选定8层以上的细胞

问题描述 投票:0回答:1

因此,最大允许数据到另一个工作表被复制为8每次用户选择多于8个数据,将发生错误。我怎样才能表现出我自己的msgbox,而不是由VBA提供的默认MSGBOX。

我完全新的VBA。

这是我的代码。它的工作原理,但我认为这是适用于用户可能遇到的所有错误。

Sub CopySelectedCells()

    On Error GoTo EncounteredError

        Worksheets("3inch_OD7133KS ").Activate
        Selection.Resize(, 4).Copy Destination:=Worksheets("Form").Range("b7")
        Selection.Resize(, 4).Copy Destination:=Worksheets("Form").Range("b27")
        Selection.Resize(, 4).Copy Destination:=Worksheets("Form").Range("b47")

    Exit Sub

EncounteredError:

    MsgBox "ERROR OCCURED: Please choose a MAXIMUM of 8 data."


End Sub
excel vba msgbox
1个回答
1
投票

On Error GoTo Handler通常被认为是不好的做法。你应该总是试图尽可能编写出预期的错误更大的可靠性。在这种情况下,我们可以简单地把使用.Rows.Count.Columns.Count任何行动之前检查.Selection的大小。我们需要分限制到只有工作的时候此方法返回8 x 1范围。


如果这是你所有的子做那么这应该是罚款....

Sub Selections()

If Selection.Rows.Count <> 8 Or Selection.Columns.Count <> 1 Then
    MsgBox "Error Message Here"
    Exit Sub
Else
    Selection.Resize(, 4).Copy
        With Worksheets("3inch_OD7133KS ")
            .Range("B7").PasteSpecial xlPasteValues
            .Range("B27").PasteSpecial xlPasteValues
            .Range("B47").PasteSpecial xlPasteValues
        End With
End If

End Sub

如果你有更多的代码,您已经验证可以嵌套测试这样的选择范围的大小后添加....

Sub Selections()

If Selection.Rows.Count <> 8 Or Selection.Columns.Count <> 1 Then
    MsgBox "Error Message Here"
    Exit Sub
End If

Selection.Resize(, 4).Copy
    With Worksheets("Sheet1")
        .Range("B7").PasteSpecial xlPasteValues
        .Range("B27").PasteSpecial xlPasteValues
        .Range("B47").PasteSpecial xlPasteValues
    End With

'More code here....

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.