阅读帖子Excel VBA - select a dynamic cell range
我有一个额外的问题来补充你的答案,如果它发现没有srange(没有找到所寻求的动态范围),我们将如何处理错误以使其做其他事情?
在我的待办事项清单中了解错误处理很多!!
我非常感谢任何建议。
谢谢!
答案 0 :(得分:0)
我不赞成先前问题的答案。是的,他们为“我怎么做X?”这个问题提供了很好的答案,但没有人补充说你不应该做X.
我知道Macro Recorder会大量使用Selection,但是宏会在用户操作时记录它们;它不知道用户的意图,也无法创建良好的VBA。总是有一种VBA可供选择更好,更快,更容易理解的范围。也许我应该说几乎总是因为存在选择可能更容易解决的模糊情况。
例如,如果您希望选择范围并将其粘贴到其他位置,您可以发现以下内容更容易编码和理解:
range.Copy Destination := Cell
好的,我会把我的爱好马放回柜子里回答你的问题。
Dim Rng As Range
Set Rng = expression returning a range
' Examples from question
Set Rng = Range("A1:M1")
Set Rng = Range(Cells(1,1),Cells(1,Columns.Count).End(xlToLeft))
Set Rng = Range("A1:" & Cells(1, i).Address)
Set Rng = Range(Cells(1, Col1), Cells(1, Col2))
If Rng Is Nothing Then
' Code to handle situations where range does not exist
Else
' Code to handle situations where range does exist
End If