gpt4 book ai didi

vba - 浏览工作表的所有对象(表格除外),并打印其类型

转载 作者:行者123 更新时间:2023-12-04 20:44:05 24 4
gpt4 key购买 nike

我想写一个解析的VBA程序所有元素除二维数​​据表外的工作表。

这意味着,如果它们存在,我想浏览所有图表、按钮、复选框等。我希望此列表为 详尽的 .所以第一个问题是要经过哪些收藏。

一种选择是ActiveSheet.Shapes ,另一个选项是 ActiveSheet.OLEObjects ,我不知道是否还有其他...谁能告诉我哪一个涵盖了所有内容?

一旦识别出一个项目,我想确定它是否是图表、按钮、复选框......我意识到以下代码无法实现它:它总是打印 Shape .

For Each sShape In ActiveSheet.Shapes
MsgBox TypeName(sShape)
Next

有谁知道如何显示一个项目的类型?

最佳答案

作为 MSDN 的跟进(ShapeOLEObject):

OLEObject 对象:

Represents an ActiveX control or a linked or embedded OLE object on a worksheet.



形状:

Represents an object in the drawing layer, such as an AutoShape, freeform, OLE object, or picture.



所以, ActiveSheet.Shapes包括 ActiveSheet.OLEObjects .

两个集合都不包括 Tables ,它们是 ListObjects 的一部分收藏。

所以,你想要 Shapes收藏。以下代码在事件工作表中打印所有形状的类型:
Sub test()
Dim s As Shape

For Each s In ActiveSheet.Shapes
Debug.Print "Type: " & s.Type & " Name: " & s.Name
If s.Type = msoOLEControlObject Then
Debug.Print " OleObject Type: " & TypeName(s.OLEFormat.Object.Object)
ElseIf s.Type = msoFormControl Then
Debug.Print " FormControl Type: " & s.FormControlType
End If
Next
End Sub

子程序的可能输出:

Type: 3  Name: Chart 1
Type: 1 Name: Rectangle 2
Type: 12 Name: CheckBox1
OleObject Type: CheckBox
Type: 8 Name: Button 2
FormControl Type: 0


备注:
  • s.Type表示 Shape 的类型对象并返回 MsoShapeType Enumeration
  • 如果 s.Type = msoOLEControlObject (OleObject),部分 TypeName(s.OLEFormat.Object.Object)返回 OleObject 的名称类型,如“复选框”、“按钮”等。
  • 如果 s.Type = msoFormControl (表单控件),部分 s.FormControlType返回 XlFormControl Enumeration
  • 关于vba - 浏览工作表的所有对象(表格除外),并打印其类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23547323/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com