VBA Excel 将变量名称传递给 sub;更新 sub 中变量名称的值

  • 本文关键字:sub 变量名 更新 Excel VBA vba excel
  • 更新时间 :
  • 英文 :


尝试将变量的名称传递给 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"? 我有大约 148 个变量,我正在从 Excel 电子表格中读取,并尝试将它们转储到多页用户表单中进行数据验证。 "boo"变量是我在页面更改时检查的布尔变量;如果选定的布尔变量设置为 false,我希望用户在前进到下一页之前对当前页面进行更正。

按引用传递。

Public Sub FilltheForm(myCTL As Control, intNum As Integer, Optional ByRef booName As String)

但是,在您的示例中,您将booName用作BooleanString(上面的函数签名是您的副本(。此外,您不会将任何内容重新分配给BooLastNm,因此这就是它不会更改的原因。

如果你通过ByRef,值得使用Variant检查出来,这样你也可以使用IsMissing()在UDF中提供一些灵活性。在这种情况下可能无关紧要,但学习东西总是很方便的。

最新更新