浏览工作簿时,Excel全局变量重置为空

romulax14

我遇到一个奇怪的问题,我认为它与Excel行为有关,而不是与我的代码有关。

我有一个名为“ numEtape”的全局变量,它是一个整数。我的代码包含几个步骤,其中用户必须在工作表上键入数据,然后按下将数据保存在数组中并递增“ numEtape”的按钮,然后再进行下一步。

代码(简化)如下所示:

Dim numEtape As Integer

Sub AjoutEssai()
    numEtape = 2
    UFPreAjoutInfos.Show 'Unrelated Userform that asks user for more informations, but doesn't modify "numEtape" or call any other macro
    
    Call InterfaceFiller
    
End Sub

Sub InterfaceFiller()
Dim rangedubtn As Range
Dim btnPrecedent As Button

Select Case numEtape
    Case 2
         'Change value of some cells
    Case 3
         'Change value of some cells
    Case 4
         'Change value of some cells
    Case Is >= 5
         'Change value of some cells
    Case Else
         Debug.Print "Error"
End Select

Set rangedubtn = Sheets("Interface").Range("M3")
    Set btnPrecedent = Sheets("Interface").Buttons.Add(rangedubtn.Left, rangedubtn.Top,rangedubtn.Width, rangedubtn.Height) 
    With btnPrecedent
      .OnAction = "mSuivant"
      .Caption = "Suivant"
      .Name = "btnSuivant"
    End With
End Sub

Sub mSuivant()
    numEtape = numEtape + 1
    Call InterfaceFiller
End Sub

我认为代码本身并不重要,因为我首先调用AjoutEssai()可以使numEtape始终大于2,所以我可以从中期待什么。但是,当用户在步骤中打开和关闭其他excel / Office文件(其中没有任何VBA代码/宏),Excel似乎会清空numEtape,从而Select Case转到Case Else

excel什么时候从内存中删除全局变量,并且有什么方法可以防止这种现象发生?

维塔塔
  • Public numEtape As Long

一个可行的选择是使用publiclike这样的词public numEtape As Long这样,只要打开Excel工作簿,变量就将保存其值。在旧版本的VBA中,单词是GlobalDim,Global,Public和Private作为Modular Field Access Modifiers有什么区别?

  • Dim numEtape As Long

DimSub外部使用Function,代码结束后将清空该变量。仅使用此代码段:

Dim numEtape As Long

Sub MainTest()        
    numEtape = 23        
End Sub

一旦运行它并命中End Sub该变量,也将清空。运行后检查MainTest()

Sub PrintingVariable()
    Debug.Print numEtape
End Sub

如果要保存值,有两种基本的工作方式:

  • 将值写入Excel单元格
  • 将值写入数据库

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

全局变量为空

来自分类Dev

全局变量重置为0

来自分类Dev

全局变量重置为0

来自分类Dev

将工作簿设置为全局变量 - 下标超出范围

来自分类Dev

全局变量重置

来自分类Dev

在每个工作簿打开时重置变量

来自分类Dev

将工作簿声明为全局变量

来自分类Dev

Javascript全局变量为空

来自分类Dev

Flask中的全局变量被重置为None

来自分类Dev

全局变量为空,即使已在sub vba中设置了全局变量

来自分类Dev

Python全局变量在函数中为空

来自分类Dev

Bash全局变量在函数中为空

来自分类Dev

到达main()时,由全局变量的构造函数初始化的静态模板变量为空

来自分类Dev

Javascript全局变量正在重置

来自分类Dev

如何重置全局变量prev?

来自分类Dev

Excel工作簿连接字段“上次刷新”始终为空

来自分类Dev

Excel工作簿连接字段“上次刷新”始终为空

来自分类Dev

将变量设置为全局变量时,变量指向何处?

来自分类Dev

全局变量无法正常工作

来自分类Dev

nodejs全局变量未按预期工作

来自分类Dev

在C ++中为全局变量赋值

来自分类Dev

PHP为函数定义全局变量?

来自分类Dev

为 FirebaseDatabase 中的全局变量赋值

来自分类Dev

Php 为全局变量返回 NULL

来自分类Dev

Android startCamera为我提供了空Intent,并且...是否破坏了我的全局变量?

来自分类Dev

在Excel VBA中设置全局变量

来自分类Dev

Excel VBA全局变量“寿命”?

来自分类Dev

全局变量不会为每个组重置

来自分类Dev

如何在python“递归”函数中重置全局变量?