VBA创建文本框后无需指定名称自动选中激活的实现方法
VBA创建文本框后无需指定名称直接操作的实现方案
核心逻辑:VBA中Shapes.AddTextbox方法执行后会直接返回新创建的文本框对应的Shape对象,不需要通过名称检索即可直接操作。
方案1:代码可共享变量(推荐使用)
直接将创建的文本框赋值给变量,后续选中、修改属性等操作都可以直接调用变量,完全不依赖文本框名称:
' 定义变量接收新创建的文本框对象 Dim newTextBox As Shape If TypeName(Selection) = "Range" Then With Selection Set newTextBox = ActiveSheet.Shapes.AddTextbox( _ msoTextOrientationHorizontal, .Left, _ .Top, .Width, .Height) End With End If ' 后续需要选中该文本框时直接调用,不需要写名称 newTextBox.Select ' 若需要获取名称也可以直接读属性 ' Debug.Print newTextBox.Name
方案2:两段代码逻辑拆分无法共享变量
如果你的两段代码逻辑完全独立,不能传递变量,可利用「新插入的Shape默认排在工作表Shapes集合末尾」的特性,通过集合最大索引获取刚创建的文本框:
Cells.Select Range("C5").Activate ' 直接取Shapes集合的最后一个元素,即为刚创建的文本框 ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Select
注意:方案2仅适用于创建文本框后到选中前,没有插入其他Shape对象的场景,优先使用方案1稳定性更高。
内容的提问来源于stack exchange,提问作者Rehan Jamshed
相关产品推荐
相关产品推荐

