首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得CommandButton集合?

如何获得CommandButton集合?
EN

Stack Overflow用户
提问于 2017-02-09 11:43:06
回答 3查看 2.6K关注 0票数 3

我需要列出工作表上大量旧的ActiveX命令按钮的标题。

我该如何参考收藏呢?

PseudoCode:

代码语言:javascript
复制
For each btn in Activesheet.CommandButtons 
     Debug.Print btn.Caption
Next btn
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-09 12:13:03

代码语言:javascript
复制
Dim s As Worksheet

Set s = ActiveSheet

Dim o As OLEObject

For Each o In s.OLEObjects

    If TypeName(o.Object) = "CommandButton" Then
        Debug.Print o.Object.Caption
    End If

Next
票数 5
EN

Stack Overflow用户

发布于 2017-02-09 12:19:38

更新了我从MrExcel网站找到的代码:

代码语言:javascript
复制
Dim BtnActX As Integer
Dim MyShapes As OLEObjects
Dim Btn As OLEObject

'OLE Programmatic Identifiers for Commandbuttons = Forms.CommandButton.1
Set MyShapes = ActiveSheet.OLEObjects
For Each Btn In MyShapes
If Btn.progID = "Forms.CommandButton.1" Then
BtnActX = BtnActX + 1
abc = Btn.Object.Caption
MsgBox "command button text is: " & abc
End If
Next
票数 2
EN

Stack Overflow用户

发布于 2017-02-09 12:04:21

在工作表中循环遍历OLEObjects,您可以使用它们的progID并看到它等于"Forms.CommandButton.1“。

注意事项:请不要使用ActiveSheet,而是使用完全限定的对象,比如Worksheets("Sheet1")

代码语言:javascript
复制
Option Explicit

Sub FindCommandButtonsInOLEObjects()

Dim Sht                 As Worksheet
Dim Obj                 As OLEObject

Set Sht = ThisWorkbook.Sheets("Sheet1") '<-- modify "Sheet1" to your sheet's name

' loop thourgh all OLE objects in "Sheet1"
For Each Obj In Sht.OLEObjects
    If Obj.progID Like "Forms.CommandButton.1" Then ' <-- check if current object is type Comman Button
        Debug.Print Obj.Object.Caption
    End If
Next Obj 

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42135822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档