gpt4 book ai didi

excel - Excel 中 Application.ActiveSheet 的所有属性 - 对象浏览器未列出成员的属性

转载 作者:行者123 更新时间:2023-12-04 21:08:25 25 4
gpt4 key购买 nike

Microsoft Docs 未列出 Object Application.ActiveSheet 的所有属性:
https://docs.microsoft.com/en-us/office/vba/api/excel.application.activesheet
它只包含一些属性,例如:ActiveSheet.Name .但是从我在网上找到的VBA脚本中,我知道还有更多的属性比如:ActiveSheet.Type所以我想也许我可以用这个 VBA 代码列出它们:来自:VBA collection: list of keys

Sub AktivSheet()
Dim key As Variant
For Each key In Application.ActiveSheet
Debug.Print "Key: " & key, "Value: " & Application.ActiveSheet.Item(key)
Next
End Sub
但它不起作用,Microsoft Docs 建议使用对象浏览器。但是对象浏览器没有列出 Application.ActiveSheet 的属性:
ActiveSheet Object Browser
我没主意了!我只想要一个所有 ActiveSheet 属性的列表。因为我只需要知道事件工作表的文本方向,就好像它是从左到右或从右到左一样。

最佳答案

I just want a list of all ActiveSheet properties


您无法使用 100% VBA 代码轻松地以编程方式获得它,VBA 几乎具有零反射功能。
现在,假设我们不是在寻找检索对象属性的编程方式,以下是如何使用对象浏览器来获取您要查找的内容。
首先,右键单击对象浏览器中的任意位置并选择“显示隐藏的成员”选项以显示您正在查看的库的全部范围。这会在编辑代码时影响名称列表下拉列表:您现在将看到隐藏的成员。
Excel 类型库中的隐藏模块之一是名为 Global 的模块,具有隐藏的 _Global 接口(interface):
Excel's Global module
该隐藏的全局模块是您如何键入 MsgBox ActiveSheet.Name 并且它“正常工作”(假设有一个 ActiveSheet - 当您正在使用的 Application 实例中没有打开事件工作簿时,它总是会因错误 91 而爆炸)即使您尚未指定您正在使用的 Workbook :隐含地, ActiveSheet 只是在解决 ActiveWorkbook 是什么。
所以 ActiveSheet 是一个属性,而不是一个对象。它是一个返回对象的属性,但它的声明类型是 Object
这意味着您直接针对 ActiveSheet 进行的任何成员调用都是隐式后期绑定(bind)的:您可以输入 MsgBox ActiveSheet.Naem 并且 VBA 会很高兴地编译错字( Option Explicit 无法在此处保存您),并且只会在运行时出现错误 438 “我找不到那个属性!”。
为了知道 ActiveSheet 有什么属性,我们需要知道我们正在查看什么运行时类型。由于 Workbook 对象中的工作表可以是 WorksheetChart 或其他几种类型的遗留“工作表”对象,因此在编译时确实没有可访问的成员,因为在编译时 ActiveSheet 只是指向一个 Object ,以及只有在运行时才知道的对象类型。
因此,我们不是针对 ActiveSheet 进行编码,而是针对 Worksheet 进行编码,因为我们知道我们期望使用的特定工作表是一个 Worksheet 对象。
Dim Sheet As Worksheet
Set Sheet = ActiveSheet
现在,当我们输入 Sheet. 时,我们处于早期绑定(bind)状态(所涉及的类型在编译时是已知的并已解决),并提供了所有可用成员的列表:
member dropdown listing all members of a local Sheet object variable
每次访问返回 ObjectVariant 的成员(函数、属性)时,对其进行的任何成员调用都将是后期绑定(bind)的。
努力停留在早期绑定(bind)领域:根据需要声明局部变量,以便编译器能够“看到”并验证所有内容!试着输入下面的代码来感受一下不同 - 每当你输入一个 . 点并且什么都没有出现时,这表明编译器正在忽略正在发生的事情,你可能会将编译时错误转移到运行时:
MsgBox ActiveSheet.DisplayRightToLeft '<~ late bound
Dim Sheet As Worksheet
Set Sheet = ActiveSheet
MsgBox Sheet.DisplayRightToLeft '<~ early bound

关于excel - Excel 中 Application.ActiveSheet 的所有属性 - 对象浏览器未列出成员的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64010564/

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