在Excel工具栏

时间:2017-07-09 13:19:45

标签: excel vba excel-vba

假设我们有一个非常简单的脚本,可以打印如下变量名。

Dim ii as String
ii = "This is a test"
MsgBox(ii)

脚本是通过按下excel功能区中的按钮来运行的,该按钮链接到VBA代码。

现在有任何可能的方法可以直接在excel功能区中设置变量“ii”的值。在VBA脚本中添加一些用户友好的自定义?优选地,如果用户可以右键单击按钮,则能够在那里更改变量,然后excel将记住所有工作簿的此更改。

2 个答案:

答案 0 :(得分:0)

您可以使用以下Microsoft tutorial向功能区添加按钮,并让它调用VBA宏。

全局变量必须存储在标准模块或文档模块中。如果在打开工作簿时需要初始化它,无论它存储在何处,都必须在WorkbookOpen事件期间或通过此事件调用的宏设置该值。以防万一,此处是指向Chip Pearson event tutorial的链接。

如果需要在会话(使用)之间保留变量的值,则必须将其保存到工作表中的单元格中。隐藏或非常隐藏的工作表可以很好地用于此目的。如果在会话之间重置该值,则可以对模块中的默认值进行硬编码。

这应该是你需要的全部。您可能必须使用一些宏来获得您正在寻找的确切结果。最终,这将取决于您希望实现的目标。

答案 1 :(得分:0)

如果您希望数据对于特定机器或用户是持久的。将用户数据存储在注册表中。

只需在宏的开头加载注册表。提供一个使用文本框,组合框,复选框或其他选项的选项,以允许用户除默认值外或自行更改,然后将选择保存回注册表。

这样,它可以针对特定用户进行个性化设置。

典型功能是

注册表值存储在一个固定的位置(我不认为可以在本地VBA中更改此值)。如果您希望通过Windows注册表编辑器查询设置,请使用此键:

"MyComputer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\"

要读取注册表值,请使用以下VBA代码的修改版本

GetSetting("MyApp","MySection","MyKey","My Default Value")

要写入注册表值:

SaveSetting("MyApp","MySection","MyKey","MyValue")

有关更多信息,请参见Better Solutions

标记