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