vba - VBA Excel 将变量名传递给子;更新 sub 中变量名的值
问题描述
尝试将变量的名称传递给 SUB,然后更新 SUB 中变量的值,但我没有做对。
我有一个全局变量
Dim booLastNm as Boolean
我有一个功能
Public Sub FilltheForm(myCTL As Control, intNum As Integer, Optional booName As String)
myCTL.Value = myArray(1, intNum)
If booName <> "" Then booName = True
MsgBox booName & vbCrLf & vbCrLf & booLastNm
End Sub
我在组合框更改例程中调用该函数:
FilltheForm Me.boxLastNm, 1, "booLastNm"
它正确地更改了 myArray(1, 1) 中的用户表单字段“Me.boxLastNm”。我还希望将全局变量“booLastNm”的值设置为 True。但是,“booName”的值设置为 True,而“booLastNm”的值仍设置为“False”。如何将要更改的变量的名称(在本例中为“booLastNm”)传递给函数,以便更改值而不是变量“booName”?我从 Excel 电子表格中读取了大约 148 个变量,并试图将它们转储到多页用户表单中以进行数据验证。“boo”变量是我在页面更改时检查的布尔变量;如果选定的布尔变量设置为 false,我希望用户在前进到下一页之前对当前页面进行更正。
解决方案
通过参考。
Public Sub FilltheForm(myCTL As Control, intNum As Integer, Optional ByRef booName As String)
但是,在您的示例中,您同时使用booName
aBoolean
和 a String
(上面的函数签名是您的副本)。此外,您不会将任何内容重新分配给BooLastNm
,这就是它没有改变的原因。
如果您正在通过ByRef
,值得使用 a 进行检查Variant
,这样您也可以使用IsMissing()
UDF 来提供一些灵活性。在这种情况下可能不相关,但学习东西总是很方便。
推荐阅读
- bootstrap-4 - 为什么@screen-xs-min 什么都没有运行?
- javascript - 反应类名没有选择内联样式
- ios - 强制 UITextView 按需呈现文本?
- javascript - 从组件中隐藏 Angular 6 中的引导对话框
- sql - 使用 SQL 中的日期表将工作日添加到另一个表
- c++ - 如何在gecode中打印变量的值
- flutter - flare_flutter 动画显示问题
- python - Python:合并两个字典列表,其中一个字典具有唯一列
- game-engine - 如何将 FString 转换为 Char* ?UE4
- python - Numpy all 或 any 没有给我想要的结果