VBA中的'Range.Parent'和'Range.Worksheet'有什么区别?

What is the difference between 'Range.Parent' and 'Range.Worksheet' in VBA?

当与范围一起使用时,.Parent.Worksheet 属性似乎引用 Range 所在的同一个工作表对象。

例如,这两行return相同的值:

Debug.Print Selection.Parent.Name
Debug.Print Selection.Worksheet.Name

两者有区别吗?每个方法都有 advantages/disadvantages 吗?

除非您可以保证 Selection 始终是工作表的一部分,否则并不是说 Selection.Parent.Name 会产生与 Selection.Worksheet.Name 相同的结果。如果它是 "in" 其他类型的对象(例如图表或图形),结果可能会大不相同 - 您需要进行一些测试。

因此,Selection.Worksheet.Name 更准确(而且,正如有人在评论中指出的那样,执行速度可能更快)。但是,如果您不能保证 Selection 将引用 Worksheet,它可能会触发错误或产生意外结果。