Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel功能区中自定义VBA按钮_Excel_Vba - Fatal编程技术网

在Excel功能区中自定义VBA按钮

在Excel功能区中自定义VBA按钮,excel,vba,Excel,Vba,假设我们有打印变量值的代码 Dim ii as String ii = "This is a test" MsgBox(ii) 通过按下Excel功能区中链接到VBA代码的按钮来运行代码 有没有办法在Excel功能区中设置变量“ii”的值,为VBA代码添加一些用户友好的自定义 用户最好右键单击按钮以更改变量的值,Excel将记住所有工作簿的此更改。您可以使用以下命令将按钮添加到功能区,并将其称为VBA宏 全局变量必须存储在标准模块或文档模块中。如果在打开工作簿时需要初始化它,无论它存储在何处,

假设我们有打印变量值的代码

Dim ii as String
ii = "This is a test"
MsgBox(ii)
通过按下Excel功能区中链接到VBA代码的按钮来运行代码

有没有办法在Excel功能区中设置变量“ii”的值,为VBA代码添加一些用户友好的自定义

用户最好右键单击按钮以更改变量的值,Excel将记住所有工作簿的此更改。

您可以使用以下命令将按钮添加到功能区,并将其称为VBA宏

全局变量必须存储在标准模块或文档模块中。如果在打开工作簿时需要初始化它,无论它存储在何处,则必须在WorkbookOpen事件期间或通过此事件调用的宏设置该值。为了以防万一,这里有一个链接

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

这应该是你所需要的一切。您可能需要使用一些宏才能获得所需的确切结果。最终,这将取决于您希望完成的任务。

您可以使用以下方法将按钮添加到功能区,并使其调用VBA宏

全局变量必须存储在标准模块或文档模块中。如果在打开工作簿时需要初始化它,无论它存储在何处,则必须在WorkbookOpen事件期间或通过此事件调用的宏设置该值。为了以防万一,这里有一个链接

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


这应该是你所需要的一切。您可能需要使用一些宏才能获得所需的确切结果。最终,这将取决于您希望完成的任务。

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

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

通过这种方式,它可以针对特定用户进行个性化设置

典型功能包括

注册表值存储在一个固定位置下(我不相信这可以从本机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")
有关更多信息,请参阅


如果希望特定计算机或用户的数据保持不变,请标记。将用户数据存储在注册表中

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

通过这种方式,它可以针对特定用户进行个性化设置

典型功能包括

注册表值存储在一个固定位置下(我不相信这可以从本机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")
有关更多信息,请参阅


标记“是”和“否”。您不能按描述的方式进行操作。但是您可以使用类似于
ii=Selection.Value
的东西。通过这种方式,您可以“读取”实际选定的单元格。或者使用
ii=InputBox(“code?”)
插入字符串。要使它适用于所有打开的工作簿是一个不同的部分,它与您想要执行的操作有关…我认为唯一的方法是使用输入框。。。在您发布的代码中,将Msgbox(ii)更改为
Msgbox(输入框(“文本?”,“标题”))
。。。它将请求输入,然后在MessageBox中显示是和否。您不能按上述方式执行。但是您可以使用类似于
ii=Selection.Value
的东西。通过这种方式,您可以“读取”实际选定的单元格。或者使用
ii=InputBox(“code?”)
插入字符串。要使它适用于所有打开的工作簿是一个不同的部分,它与您想要执行的操作有关…我认为唯一的方法是使用输入框。。。在您发布的代码中,将Msgbox(ii)更改为
Msgbox(输入框(“文本?”,“标题”))
。。。它将请求输入,然后在消息框中显示