【问题标题】:cannot use public var vba不能使用公共 var vba
【发布时间】:2014-09-01 03:21:40
【问题描述】:

我正在编写一个 vba 代码,我将在其中设置一些公共 var 以在许多潜艇中使用 像这样在用户表单代码中声明的变量

public xxxx as string

sub vars()
xxxx = "test"
end sub

Private Sub CommandButton1_Click()
' test button 
MsgBox ("pub var is " & xxxx)
End Sub

当我点击测试按钮时,消息框是空白的,看起来它看不到 pub var aney想法问题出在哪里 (即使我在模块或此工作簿的代码中将 public xxxx 设置为 srtring,我也会得到相同的结果) 谢谢

【问题讨论】:

  • 可能发生的情况是,您运行 vars 子程序并将 "test" 保存到 xxxx,然后脚本停止运行。一旦脚本停止,所有变量都会消失 - 什么都没有保存。您需要在 CommandButton1_Click 子中调用 vars - 如果您确实需要在脚本运行之间保存一个值,请将其保存在单元格中(如果使用 excel)或表中(在 Access 中)。
  • 1.你在哪里调用子程序'vars'? 2. xxxx在哪里定义?如果您正确定义,设置值,然后引用,您的代码将起作用。
  • 感谢 cmets。 @Acantud是的,我每次需要时都需要调用xxxx(我正在使用excel,xxxx将定义一列中的最后一个空行,我将在很多地方使用这个var,所以我不会每次都声明它我会使用)。
  • @Wayne G.Dunn : 子程序 vars 在主用户表单代码中编码,xxxx 定义在 vars sub 内部的同一个地方,并且在用户表单代码的开头我声明了一个公共 xxxx。跨度>

标签: vba public var


【解决方案1】:

这对我来说很明显,所以我可能误解了这个问题。

您没有在任何地方调用vars(),因此字符串xxxx 被初始化为其默认值(空白)。如果您将代码更改为调用vars(),如下所示:

Private Sub CommandButton1_Click()
  ' call vars() to set the string value
  vars

  ' test button
  MsgBox ("pub var is " & xxxx)
End Sub

那么它会按照你的预期工作。

在我的测试中,即使我首先单独调用vars(),然后在发布时调用 button_click,xxxx 的值设置正确。显然,这个值将无法在关闭 Excel 并重新启动它后继续存在。在这种情况下,您需要将其值保存在外部某处,并在 Excel 重新启动时重新加载。

【讨论】:

  • 谢谢我会用这个方法,在我需要xxxx var的每个子程序中调用子vars。
猜你喜欢
  • 2020-05-09
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2015-04-20
  • 2020-06-10
  • 2017-05-28
  • 2020-01-08
相关资源
最近更新 更多