Vba 识别工作表中的活动项
给我一张工作表,我知道Vba 识别工作表中的活动项,vba,excel,Vba,Excel,给我一张工作表,我知道选定项目和活动项目不是一回事。似乎所有选定项目中只有一个项目可以处于活动状态。我想写一段代码来自动识别活动项 选择总是指所选项目,但是似乎没有这样的表达式来获取活动项目。活动项的类型可以是多种多样的。它可能是一个单元格,在这种情况下,ActiveCell用于引用它。它也可以是图表,然后应使用活动图表 我是否必须检查所有的ActiveXXXX才能获取活动项?在这种情况下,是否有详尽的清单 否则,有人知道其他解决方法吗?下面的内容应该涵盖大多数情况我只是在经验中遇到这些问题,因
选定项目
和活动项目
不是一回事。似乎所有选定项目中只有一个项目可以处于活动状态。我想写一段代码来自动识别活动项
选择
总是指所选项目
,但是似乎没有这样的表达式来获取活动项目。活动项的类型可以是多种多样的。它可能是一个单元格,在这种情况下,ActiveCell
用于引用它。它也可以是图表
,然后应使用活动图表
我是否必须检查所有的ActiveXXXX
才能获取活动项?在这种情况下,是否有详尽的清单
否则,有人知道其他解决方法吗?下面的内容应该涵盖大多数情况我只是在经验中遇到这些问题,因此肯定有一些问题我错过了。然而,了解选择是什么很重要,因为解释什么是“活动”项是相当主观的
- 就实际的“活动”项而言,只有ActiveCell和 与选择相关的活动图表。活动窗口/对话框/工作簿/工作表等从不在选择范围内。下面的其他人推断出“活动”项目应该是什么,并取决于您的口味
- 例如,DrawingObjects.ShapeRange中包含多个形状(或控件等)的选择。没有活动项目,因此由您决定如何处理。下面返回第一个项目(我认为是用户首先选择的项目)
- 类似地,一组形状是一个单独的GroupObject->是否要查看组内部也是个人的决定。下面返回一个GroupObject作为活动项,因为它在技术上是单个对象
- 等等……;)李>
Function GetActive()
If typeof Selection Is Range Then 'ActiveCell can remain not nothing even if selection changes
Set GetActive = ActiveCell
ElseIf Not ActiveChart Is Nothing Then 'we test for ActiveChart instead of using typeof/typename as Selection could be e.g. ChartArea/PlotArea etc
Set GetActive = ActiveChart
ElseIf TypeName(Selection) = "DrawingObjects" Then
'Multiple objects selected (e.g. embedded OLE objects / shapes / controls)
'Container is DrawingObjects, whose ShapeRange contains the items
Set GetActive = Selection.ShapeRange.Item(1)
Else
'Single object selected (or else a special case not covered by DrawingObjects
Set GetActive = Selection
End If
End Function
您应该避免使用
选择
和激活
方法的原因有很多。。。你可能已经知道这一点,但以防万一你不知道:嗯,我没有使用它们。。。我只是想解析/识别它们…@DavidZemens你说得对,有很多理由不使用选择和激活,但是如果我想在某个动作发生时将焦点踢到某个单元格或区域,该怎么办?使用有正当的理由。选择和。选择@DavidZemens感谢您的格式化。我不知道发生了什么-当我添加项目符号时,它变得非常奇怪。我认为是嵌套的项目符号,出于某种原因,它没有在代码之前识别出换行符。干杯顺便说一句,我会用同样的方法来回答这个问题!!