【发布时间】:2020-07-28 17:05:48
【问题描述】:
我是编程新手,尤其是 vba 新手,但我正在尽我所能,现在我需要你的帮助!
所以我想要达到的目标:
我用word做了一个界面。有多个按钮。如果单击了一个按钮,则程序应检查单击的按钮标题是否是字典中的一个键,该字典在按钮单击的子外部声明。
喜欢:
我点击按钮1,上面写着:“Work” -> 检查“Work”是否是字典中的一个键 -> 如果是,则用“Work”键的第一项覆盖按钮标题
我点击按钮2,上面写着:“home” -> 检查“home”是否是字典中的键 -> 如果是,则用键“home”的第一项覆盖按钮标题
如果按钮标题没有键,它将在文档中搜索按钮标题并在标签中打印下一段(->这很好用)
我的方法:
-
我试图声明字典(在 main() 中)
-
我填了字典(在 main() 中)
-
我为按钮单击创建了子(子)
-
可选:我创建了一个函数,用于检查按钮标题是否是字典中的键(函数)
-
如果检查返回为真:覆盖按钮标题(在子中)
问题:
到目前为止,我最大的问题是通过按钮单击 subs 使字典可访问。 我只是不知道如何正确声明它。
我试图像这样将其声明为公开:
Function Main()
Public d As Scripting.Dictionary
Set d = CreateObject("Scripting.Dictionary")
d.Add "menu", Array("home", "friends", "money")
d.Add "home", Array("cat", "dog", "mouse")
d.Add "work", Array("boss", "employes")
End Function
Sub btn_Click()
schl = btn.Caption
If d.Exists(schl) = True Then
x=d(schl)
btn.Caption = x(1)
End If
End Sub
-> 需要对象(错误 424)
我试图像这样将 d 声明为静态(其余代码相同):
Static d As Scripting.Dictionary
-> 编译失败:未定义用户定义类型
所以我对我的概念非常不确定,非常感谢任何关于如何改进我的编码风格和程序本身的提示! 提前致谢!
编辑: 我尝试了 Tim Williams 的方法:
Public d As Scripting.Dictionary
Function Main()
Set d = CreateObject("Scripting.Dictionary")
d.Add "menu", Array("home", "friends", "money")
d.Add "home", Array("cat", "dog", "mouse")
d.Add "work", Array("boss", "employes")
End Function
得到:未设置对象变量(错误 91)
如果我正确理解 BigBen 和 Manpreet Singh Dhillon 并尝试了他们的方法:
Public d
Function Main()
Set d = New Scripting.Dictionary
d.Add "menu", Array("home", "friends", "money")
d.Add "home", Array("cat", "dog", "mouse")
d.Add "work", Array("boss", "employes")
End Function
我得到:需要对象(错误 424)
【问题讨论】:
标签: vba dictionary variables declaration