在 Excel VBA 中定义类模块,要如何才能自定义 Open 方法或函数? (因为在 VBE 中 Open 是保留字) excel中VBA如何在模块中自定义函数,定义好了之后如何在...

\u5728 Excel VBA \u4e2d\u5b9a\u4e49\u7c7b\u6a21\u5757\uff0c\u8981\u5982\u4f55\u624d\u80fd\u81ea\u5b9a\u4e49 Open \u65b9\u6cd5...

\u80fd\u7684\uff0c\u5728 VB \u4e2d Open \u53ea\u80fd\u662f\u5173\u952e\u5b57\uff0c
\u5728\u8c03\u7528\u65f6\u5982\u679c\u67d0\u4e00\u8fc7\u7a0b\u540d\u4e0d\u7b26\u5408 VB \u7684\u8981\u6c42\uff0c\u5219\u9700\u8981\u5728\u5176\u4e24\u4fa7\u52a0\u65b9\u62ec\u53f7\uff1a
Dim MyCollection As New Collection
Dim NextEnum As Object
Set NextEnum = MyCollection.[_NewEnum]
\u7167\u7406\u8bf4\uff0c\u4e0e\u5173\u952e\u5b57\u53ef\u80fd\u53d1\u751f\u51b2\u7a81\uff0c\u4e5f\u9700\u8981\u52a0\u65b9\u62ec\u53f7\uff0c
\u4f46\u6211\u8bd5\u4e86\u4e00\u4e0b\uff0c\u5b9e\u9645\u4e0d\u7528\u3002
\u53ef\u662f\uff0c\u5982\u679c\u5728\u58f0\u660e\u4e00\u4e2a\u4e0d\u7b26\u5408 VB \u7684\u8981\u6c42\u7684\u8fc7\u7a0b\u540d\u79f0\u65f6\uff0c
\u52a0\u65b9\u62ec\u53f7\u5374\u9047\u5230\u4e86\u95ee\u9898\uff1a
Public Sub [Open]() '\u7f16\u8bd1\u9519\u8bef
\u56e0\u6b64 VB 6.0\uff08\u6216\u662f VBA 6.0\uff09\u662f\u4e0d\u652f\u6301\u58f0\u660e\u4e0d\u7b26\u5408\u8981\u6c42\u7684\u8fc7\u7a0b\u540d\u79f0\u7684\u3002
\u4f46\u5728 VB.NET \u4e2d\u662f\u53ef\u4ee5\u7684\uff08\u867d\u7136\u8fd9\u4e48\u505a\u4e0d\u88ab\u63a8\u8350\uff09\uff0c\u4f8b\u5982\uff1a
Public Sub [Sub]()
Public Function [Property]() As Object
Dim [___] As Long
\u4e0d\u8fc7\u76ee\u524d\u8fd8\u6ca1\u6709\u89c1\u5230 VB.NET \u53d6\u4ee3 VBA \u7684\u4f4d\u7f6e\u3002
\u9664\u8fc7\u5728 Office 2010 \u7684 InfoPath \u4e2d\u7684\u4ee3\u7801\u53ef\u4ee5\u5728 VB.NET \u73af\u5883\u4e2d\u7f16\u8f91\u4ee5\u5916\uff0c
\u751a\u81f3 Office 2010 \u7684 Word \u8fd8\u5728\u7528 VBA 6.0\u2026\u2026

\u800c\u81f3\u4e8e\u4eba\u5bb6 Workbooks\uff0c
\u56e0\u4e3a\u4eba\u5bb6\u7528\u7684\u4e0d\u662f VB\uff0c\u800c\u662f C\uff0c
\u56e0\u6b64\u6ca1\u6709\u8fd9\u4e48\u4e25\u683c\u7684\u9650\u5236\u3002

\u6240\u4ee5\u53ea\u80fd\u5c06\u5c31\u4e00\u4e0b\u4e86\u2026\u2026
\u8d77\u4e2a OpenWorkbook \u6216\u662f OpenSheet \u4e4b\u7c7b\u7684\uff0c
\u53ea\u8981\u907f\u5f00\u5173\u952e\u5b57\u5c31\u884c\u2026\u2026

vb\u51fd\u6570\u5206sub\uff08\u65e0\u8fd4\u56de\u503c\uff09\u4ee5\u53cafunction\uff08\u6709\u8fd4\u56de\u503c\uff09
\u7b80\u5355\u8303\u4f8b
Public Function ss() As String
ss = "\u6211\u662f"
End Function
\u6ce8\u610f\uff0c\u60f3\u5b9a\u4e49\u7684\u51fd\u6570\u80fd\u591f\u5728\u7a97\u4f53\u6216\u522b\u7684\u6a21\u5757\u8c03\u7528\uff0c\u8be5\u51fd\u6570\u5fc5\u987b\u662fpublic\u7684\uff0c\u4e5f\u5c31\u662f\u7b2c\u4e00\u4e2a\u5173\u952e\u5b57\u5fc5\u987b\u4e3apublic
function\u7684\u8c03\u7528\u5f88\u7b80\u5355\uff0c\u76f4\u63a5\u5199\u51fd\u6570\u540d\u548c\u53c2\u6570
\u5982 msgbox ss
\u800csub\u7684\u8c03\u7528\u76f4\u63a5call\uff0c\u5982\uff1a
Public Sub ss()
ss = "\u6211\u662f"
End Sub
\u8c03\u7528call ss

\u53e6\u5916\u4e00\u70b9\u9700\u8981\u6ce8\u610f\uff0c\u8c03\u7528\u6a21\u5757\u5b9a\u4e49\u7684\u51fd\u6570\uff0c\u76f4\u63a5\u5199\u51fd\u6570\u540d\u3002\u4f46\u5982\u679c\u8c03\u7528\u7a97\u4f53\u7684\u51fd\u6570\uff0c\u5c31\u5f97\u628a\u7a97\u4f53\u52a0\u4e0a\u3002\u6bd4\u5982\uff0c\u6211\u8981\u8c03\u7528sheet1\u4e0b\u7684bb\u51fd\u6570\uff0c\u5219\u8be5\u5199\u6210 call sheet1.bb

不能的,在 VB 中 Open 只能是关键字,
在调用时如果某一过程名不符合 VB 的要求,则需要在其两侧加方括号:
Dim MyCollection As New Collection
Dim NextEnum As Object
Set NextEnum = MyCollection.[_NewEnum]
照理说,与关键字可能发生冲突,也需要加方括号,
但我试了一下,实际不用。
可是,如果在声明一个不符合 VB 的要求的过程名称时,
加方括号却遇到了问题:
Public Sub [Open]() '编译错误
因此 VB 6.0(或是 VBA 6.0)是不支持声明不符合要求的过程名称的。
但在 VB.NET 中是可以的(虽然这么做不被推荐),例如:
Public Sub [Sub]()
Public Function [Property]() As Object
Dim [___] As Long
不过目前还没有见到 VB.NET 取代 VBA 的位置。
除过在 Office 2010 的 InfoPath 中的代码可以在 VB.NET 环境中编辑以外,
甚至 Office 2010 的 Word 还在用 VBA 6.0……

而至于人家 Workbooks,
因为人家用的不是 VB,而是 C,
因此没有这么严格的限制。

所以只能将就一下了……
起个 OpenWorkbook 或是 OpenSheet 之类的,
只要避开关键字就行……


举例说明如下:

如果想把sheet1表中单元格A2的值赋给某个变量(aaa),使用下面这一句即可:
aaa=Sheet1.Range("A2")
函数引用道理相同。

扩展阅读:inc bx ... excel xfd 恢复 vba ... vba入门实例 ... vba rows 多行 ... vba case ... vba insert ... vba编程必背50个程序 ... excel vba 等待 ... excel home ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网