在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(输入框(“文本?”,“标题”))
。。。它将请求输入,然后在消息框中显示