我需要显示一个消息框,说“请选择最多8个数据”。当用户在工作表中选择了8个以上的单元格时

时间:2019-02-07 00:50:22

标签: excel vba msgbox

因此,允许在另一个工作表中复制的最大数据为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

1 个答案:

答案 0 :(得分:1)

Serializable通常被认为是不良做法。为了获得更高的可靠性,您应该始终尝试编码出预期的错误。在这种情况下,我们可以简单地检查 .Selection 的大小,然后再使用On Error GoTo Handler.Rows.Count进行任何操作。我们需要限制sub仅在返回.Columns.Count范围时起作用。


如果这是您的子工作所要做的,那应该没事。...

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