我正在使用 Windows 7 Pro / 64 在 Microsoft Office Word 2007 下编写我的第一个VBA加载项。此加载项的一部分是 UserForm 。使用从 Word 运行的Visual Basic编辑器,我发现有两种查看方式,以及两种修改UserForm属性的方法:
以下是我的属性和代码窗口的屏幕截图:
我发现的一个问题是 属性窗口只包含UserForm属性的子集 (请注意CanPaste
,{{1 }},CanRedo
不会出现在属性中),并且在属性窗口中进行的 更改将被覆盖 在代码窗口中进行的更改(例如,在运行时,{em>代码窗口中的CanUndo
会覆盖属性中的Me.Caption
字段。
我想我应该完全避免使用属性,然后通过Caption
输入所有设置,如上所示。但是(a)对于某些设置,属性会立即进行多项设置。例如,从属性中选择Verdana Bold等于{em> Code 中的UserForm_Initialize
和Font = Verdana
。并且(b)似乎属性将其控制的属性子集设置为其选择的默认值,如果我更改它们,我将无法看到它们的起始位置。
因此,我希望一次统一,全面地访问我的所有UserForm属性,包括上述默认设置。有谁知道如何将UserForm的默认设置显示为代码,或者在代码窗口中自动打开所有其当前设置?是否有一个我不知道的伞形机制?
我不是资深的VBA程序员,但我不相信我的经历是独一无二的。我搜索网络是徒劳的,无法找到解决方案。您如何通过更多经验来应对这种困境?
答案 0 :(得分:4)
您可以使用“属性”窗口在设计时设置外观相关属性。然后,这些属性值将始终应用,除非您在运行时使用VBA代码显式更改它们。
与外观无关的属性(例如CanPaste
和CanRedo
)与运行时时表单的状态相关因此,在设计时将它们配置是没有意义的。
您可以在运行时更改几乎所有属性,无论是在Initialize
事件还是其他地方。您甚至可以在运行时添加控件,但是一旦表单实例终止,您的更改就不会保留。